Здравствуйте, kubic2009, Вы писали:
K>Здравствуйте, angry.andrew, Вы писали:
AA>>Здравствуйте, ioni, Вы писали:
I>>>Здравствуйте, degtyarenko_d, Вы писали:
_>>>> Здравствуйте! Столкнулся с проблемой такого характера:
_>>>>есть библиотека, которая транслирует данные в приложение на VB6, вообщем все бы хорошо, но в момент
_>>>>передачи в одной из функций указателя на char* большого блока данных экземпляру COM класса bstr_t, являющегося обверткой для BSTR, программа попросту зависает, никаких exceptions, error, ничего! Пробовал сделать с помощью ф-ии SysAllocStringLen(char* A2W(src), UINT len) такая же фигня. Так вот не ужели максимальная длина данных типа BSTR sizeof(UINT) ~ 4 bytes то есть 65535 символов и нужно переделывать все по другому?
I>>>Вполне возможно, ведь в этой строке скрытые первые пару байт указывают на длину строки
AA>>Что-то вы, ребята, путаете. Длина BSTR хранится в четырех байтах, а не паре. А 4 байта — это 2^32, а не 65535.
AA>>Насколько мне известно, длина BSTR ограничена только объемом свободной памяти.
K>Длина BSTR ограничена типом данных второго параметра WInAPI функции SysAllocStringLen unsigned int, если 32бита, то максамально 4294967295, если 64-бита, то максамально 18446744073709551615
Друзья, спасибо за приведенные ответы, но все же каким образом, не влезая в кухню со стеком, запихнуть огромный char* в BSTR (если 32бита, то максамально 4294967295, чего вполне достаточно)?