Работа с 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? Взаимодействие с внешним миром корректно?


Ответы (0 шт):