Здравствуйте, 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)