Как конвертировать LPWSTR в BSTR? LPWSTR — это WCHAR *, а BSTR — это OLECHAR *, OLECHAR снова имеет тип WCHAR, просто будет работать приведение типов? или нам нужно приложить дополнительные усилия? Это показывает плохую ошибку преобразования / предупреждение.
Вы делаете это так
BSTR pBstr = SysAllocString(szWCharString);
// do something with the BSTR here ...
SysFreeString(pBstr);
Вы должны помнить, чтобы освободить место, используемое для преобразования, вызвав SysFreeString
после этого.
BSTR состоит из OLECHAR [] и информации о длине, добавленной к строке. BSTR является указателем на часть OLECHAR []. Но функции BSTR требуют информацию о длине (емкость и длина тока).
Вам нужно SysAllocString Функция для выделения всей структуры.