我有一个需要调用CoCreateInstance()的DLL。在Dllmain()中,我创建了一个新线程来运行我的函数do_stuff()。 CoCreateInstance()在do_stuff()中被调用,如下所示。CoCreateInstance()永远不会返回
BOOL WINAPI DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpvReserved) {
...
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)do_stuff, NULL, 0, NULL);
...
break;
...
}
...
return TRUE;
}
DWORD WINAPI do_stuff(void) {
...
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr)) {
hr = CoCreateInstance(rclsid, NULL, CLSCTX_LOCAL_SERVER, riid, ppv);
...
但是,CoCreateInstance()挂起并且从不返回。我也试过使用MULTITHREADED选项,但无济于事。任何反馈或想法表示赞赏。