Всем добрый день.
У меня такой вопрос.
Как получить указатель на другой интерфейс из моего метода с использованием ATL?
Например, реализация моего метода такая:
CComObject<CMyObj> *pCMyObj;
CComPtr<IMyObj> pIObj;
STDMETHODIMP MyClass::GetMyObject(REFIID riid, IUnknown **ppv)
{
HRESULT hr = S_OK;
if(riid == IID_IMyObj)
{
hr = CComObject<CMyObj>::CreateInstance(&pCMyObj);
if(SUCCEEDED(hr))
{
hr = pCMyObj->QueryInterface(riid, (void**)&pIObj);
if(SUCCEEDED(hr))
{
pCMyObj->AddRef();
*ppv = pCMyObj;
}
}
}
else
hr = E_NOTIMPL;
return hr;
}
Но, почему-то всегда получаю ошибку, после вызова этого метода в клиенте, типа:
«Приложение обратилось к объекту из другого потока».
Как правильно построить COM объект и передать на него указатель клиенту в этом случае?
Всем буду, благодарен за помощь.
Спасибо.