Указатель на другой интерфейс.
От: NEW_DVA  
Дата: 25.06.04 07:05
Оценка:
Всем добрый день.
У меня такой вопрос.
Как получить указатель на другой интерфейс из моего метода с использованием 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 объект и передать на него указатель клиенту в этом случае?

Всем буду, благодарен за помощь.
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.