在DLL中调用IWbemLocator::connectServer卡死无返回

Areslee 2016-09-30 03:50:47
UINT DebugTest2(void)
{
HRESULT hRet=CoInitializeEx(NULL,COINIT_MULTITHREADED);
IWbemServices *m_pService;
CComPtr<IWbemLocator> Locator;
if(RPC_E_TOO_LATE==hRet)
{
hRet=S_OK;
}
else if(FAILED(hRet))
{
return hRet;
}

hRet=CoInitializeSecurity(NULL, // we're not a server
-1, // we're not a server
NULL, // dito
NULL, // reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // let DCOM decide
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
EOAC_NONE,
NULL );
if((RPC_E_TOO_LATE!=hRet)&&FAILED(hRet))
{
return hRet;
}

hRet=CoCreateInstance(CLSID_WbemLocator,NULL,CLSCTX_INPROC_SERVER,IID_IWbemLocator,reinterpret_cast<void**>(&Locator));
if(FAILED(hRet))
{
return hRet;
}
hRet=Locator->ConnectServer(L"root\\cimv2",NULL,NULL,NULL,WBEM_FLAG_CONNECT_USE_MAX_WAIT,NULL,NULL,&m_pService);
.....
}


之前在另一个工程中(EXE)同样的代码能正常工作,但放到后到DLL之后卡死在ConnectServer()上,不知道为什么,求大牛指点。谢谢
...全文
363 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslee 2016-10-01
  • 打赏
  • 举报
回复
找到原因了,不能在DllMain里调
oyljerry 2016-09-30
  • 打赏
  • 举报
回复
可能只能主线程中调用这个接口

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧