描述:
在下面这个函数中,我想通过excute()来由server构造一个IMyclass接口出去给客户使用,于是这样写。我觉得没有错压。
STDMETHODIMP CQuery::Execute(IMyClass **ppMy)
{
CComObject<CMyClass>* pMyClass;
HRESULT hr = CComObject<CMyClass>::CreateInstance(&pMyClass);
_ASSERTE(SUCCEEDED(hRes));
pMyClass->AddRef();
pMyClass->Dosomething();
hr = pMyClass->QueryInterface(IID_IMyClass,ppMy);
pMyClass->Release();
}
在客户那边就是用import typelibarary后的接口这样使用
:
IMyClass IM;
IQuery IQ;
IQ.CreateDispatch(L"server.Query.1").
IQ.Excute((LPDISPATCH*)&IM)
IM.Dosomething;
IM.ReleaseDispatch();
也没有错把,由server创建的IM我自己release();
可是奇怪的是,我这个IM,release后server就结束了(难道计数出错了,server认为应该推出了?),不应该亚,应为我的IQ还在压。(说明一下,IQ是个全局的,我这里写的是示例代码。)
为什么压,青执教!bow!