Re[2]: непонятки с BSTR
От: Alex Alexandrov США  
Дата: 09.11.04 16:13
Оценка: +2
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, ssm, Вы писали:


RB>Все зависит от наличия маршаллинга. Если компонент загружен inproc и используется "ранее связывание", то, скорее всего, строка будет передана и через LPWSTR. Если же имеется маршаллинг, то нужно конвертировать в BSTR. Маршаллер читает размер необходимого буфера из строки. У меня были случаи, когда вызов метода пытался захватить несколько гигов памяти из-за этой ошибки. Также, ошибка может быть "нестабильной" — как повезет.


RB>Корректно все таки конвертировать в BSTR всегда.


Кроме того, есть устойчивые подозрения, что для переданного LPWSTR функция SysStringLen вернет мусор, поскольку для BSTR длина хранится в четырех байтах ПЕРЕД значением самого указателя BSTR, а в твоем случае там будет мусор.
It's kind of fun to do the impossible (Walt Disney)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.