Re[4]: использование LPTSTR в COM
От: Vaso Австралия  
Дата: 23.05.02 08:30
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Чем отличается в IDL-файле такие описания (WIN32):

Vi2>
Vi2>[...] HRESULT func( [in] LPWSTR buf )
Vi2>от
Vi2>[...] HRESULT func( [in] unsigned short* buf )
Vi2>или от
Vi2>[...] HRESULT func( [in] BSTR buf )
Vi2>

Vi2>И сколько информации будет передаваться ЛЮБЫМ маршаллером при таком описании?
Vi2>Первые два случая вообще эквиваленты — передаются 2 байта, причём любым маршаллером, а третий отличается, потому как MIDL не равнодушен именно к имени "BSTR", хотя оно тоже "unsigned short*".

Vi2>Поэтому выход, правильно предложенный Sergey:

Vi2>
А ты попробуй на досуге так не заморачиваться, а просто передать LPCTSTR. Уверен, у тебя получится. Ответ содержится в твоем вопросе: BSTR тоже раскрывается в LPWSTR, но маршалится особым образом. Почему? Видимо потому, что для MIDL compiler'а в отличие от cl.exe LPWSTR != unsigned short* != BSTR. Код для заглушек/прокси получается разный. Я так думаю...

Настоящему индейцу завсегда везде ништяк!
Vaso
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.