我有一個需要調用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選項,但無濟於事。任何反饋或想法表示讚賞。