Re[14]: Указатель на другой интерфейс.
От: NEW_DVA  
Дата: 28.06.04 06:41
Оценка:
Здравствуйте, SergH, Vi2, Tom.

Всем большое спасибо за помощь.
После добавления в клиенте вызова метода QueryInterface(IID_IMyObj, (IUnknown**)&obj), всё стало работать нормально.
Т.е. теперь он получился такой:
IMyClass *pIMyClass = NULL;
IMyObj *obj = NULL;
IUnknown  *pUnk = NULL;
int param;
HRESULT hRes = ::CoCreateInstance(CLSID_MyClass, 
                NULL,
                CLSCTX_SERVER,
                IID_IMyClass,
                (void**)&pIMyClass);
if(SUCCEEDED(hRes))
{
    hRes = pIMyClass->GetObject(IID_IUnknown, (IUnknown**)& pUnk);
    if(SUCCEEDED(hRes)){
        hRes = pUnk->QueryInterface(IID_ IMyObj, (void**)&obj);
        if(SUCCEEDED(hRes)){
            hRes = obj->Method1(&param);
            hRes = obj->Release(); 
        }
        hRes = pUnk->Release(); 
    }
            
    pIMyClass->Release();

}

Дело в том, что я сначала пытался написать такой метод в MIDL:
HRESULT GetObject([in] REFIID riid, [out, iid_is(riid)] void **ppv);
Но компилятор MIDL давал ошибку на void **ppv.

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