有一个EXE(独立进程)的COM组件类A ,创建并管理COM组件类B的接口Ib(B是进程内的),现在A的接口提供把Ib传给使用它的客户端的方法 HRESULT GetB(IUnknown ** ppIunk);但是这个IUnknown传过去后QueryInterface(__uuidof(Ib),...)出现了0x80020008不正确的变量类型错误,我知道这个功能肯定可以实现的,但就是找不到我在哪里犯了错误。希望有经验的朋友能给点提示。谢谢!
调试欢乐多
那么Ib的内存结构你是如何暴露给客户端的呢?的确,信息太少
没有比较详细的代码,真的不好说。
HRESULT GetRender([in] long dwId, [out] IUnknown ** ppUnk);客户程序能够得到这个IUnknown,像这样,但是始终QueryInterface不到IbCComPtr<IUnknown> spUnk;
HRESULT hr = S_OK;
hr = IA->GetRender(dwId, &spUnk);
if(SUCCEEDED(hr))
{
CComPtr<Ib> spIB;
hr = spUnk.QueryInterface(&spIB); //这里始终返回0x80020008错误
if(SUCCEEDED(hr))
{
spIB->Start();
}
}
hr = IA->GetRender(dwId, &spUnk);代码多,代码乱?晕,用了COM自找麻烦
3层架构没意义了