Работа с BSTR в COM
Есть такой интерфейс
[
uuid(92FAFEE3-71D8-49C6-91DD-8B1560C6FA68),
oleautomation
]
interface IrsTest : IUnknown {
[propget, id(1)] HRESULT _stdcall FileName([out, retval] BSTR* pVal);
[propput, id(1)] HRESULT _stdcall FileName([in] BSTR newVal);
};
Делаю такую реализацию
class CTestImpl : public ITest {
private:
ATL::CComBSTR fileName;
public:
virtual HRESULT __stdcall get_FileName(BSTR* pVal);
virtual HRESULT __stdcall put_FileName(BSTR newVal);
};
HRESULT __stdcall CTestImpl::get_FileName(BSTR* pVal) {
*pVal = fileName;
return S_OK;
}
HRESULT __stdcall CTestImpl::put_FileName(BSTR newVal) {
return fileName.AssignBSTR(newVal);
}
Вопрос: я нигде не напутал с BSTR? Взаимодействие с внешним миром корректно?