Здравствуйте, 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(¶m);
hRes = obj->Release();
}
hRes = pUnk->Release();
}
pIMyClass->Release();
}
Дело в том, что я сначала пытался написать такой метод в MIDL:
HRESULT GetObject([in] REFIID riid, [out, iid_is(riid)] void **ppv);
Но компилятор MIDL давал ошибку на void **ppv.
Ещё раз, всем большое спасибо!