Здравствуйте, okgluck, Вы писали:
O>Здравствуйте, Tom, Вы писали:
Tom>>А в IDL-е строка обьявлена как LPOLESTR* или как BSTR*?
Tom>>Если первое — обьяви, как второе.
Tom>>Первая строка освобождается через CoTaskMemFree, вторая через SysFreeString, которая, фактически отнимает от указателя sizeof(int) и вызывает CoTaskMemFree
O>Спасибо боьшое за ответ
O>В IDL ОПИСАНИЕ ТАКОЕ
O> HRESULT GetClassDetails(
O> [in] REFCLSID clsid,
O> [out] LPOLESTR* ppszProgID,
O> [out] LPOLESTR* ppszUserType
O> );
O>Как эффективней реализовать получение параметров метода объявленных как [out] и являющимися LPOLECHAR*
O>ИСПОЛЬЗУЯ ATL??
O>Заранее благодарен!
Если строка именно LPOLESTR, то использовать на клиенте CComBSTR нельзя. Освобождай строку при помощи CoTaskMemFree, а ещё лучше таки используй BSTR. BSTR тот же LPOLESTR, только освобождается и выделяется через Sys***, а не CoTask... и в COM считается стандартной строкой именно BSTR а не LPOLESTR.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>