大家好,我是COM小白,請教一個問題
用CoRegisterClassObject和CoRegisterPSClsid在主執行緒內注冊多個IID介面后,在當前執行緒用QueryService可以獲取到介面,但是其他創建的執行緒就無法獲取到介面,回傳“沒有注冊的類”錯誤。
注冊代碼如下:
DLLINFO Dll_GetProxyDllInfo=(DLLINFO)GetProcAddress(dllHandle,"GetProxyDllInfo");
if(Dll_GetProxyDllInfo==NULL) {
FreeLibrary(dllHandle);
return;
}
// 從dll中獲取代理資訊 (interface IIDs and the proxy stub CLSID)
CLSID* pProxyClsid=NULL;
ProxyFileInfo** pProxyInfo=NULL;
Dll_GetProxyDllInfo(&pProxyInfo,&pProxyClsid);
if(!pProxyClsid||!pProxyInfo) {
FreeLibrary(dllHandle);
return;
IUnknown* ClassObjPunk=NULL;
res=CoGetClassObject(*pProxyClsid,CLSCTX_INPROC_SERVER,nullptr,IID_IUnknown,(void**)&ClassObjPunk);
DeactivateActCtx(0,actCtxCookie);
ReleaseActCtx(hActCtx);
if(res!=S_OK) {
FreeLibrary(dllHandle);
return;
}
// 向COM重新注冊類物件。
DWORD dwCookie;
res=CoRegisterClassObject(regClsid,ClassObjPunk,CLSCTX_INPROC_SERVER,REGCLS_MULTIPLEUSE,&dwCookie);
ClassObjPunk->lpVtbl->Release(ClassObjPunk);
if(res!=S_OK) {
FreeLibrary(dllHandle);
return;
uj5u.com熱心網友回復:
試試執行緒中先 CoInitialize 或 CoInitializeEx 初始化COM庫uj5u.com熱心網友回復:
試過了,沒有作用
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/30284.html
上一篇:DW圖片超鏈接熱區自適應問題
下一篇:連通區域最小外接矩形的長寬比問題
