2012-10-12 158 views
2

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

回答

1

this question

你不應該做任何的API調用,特別是對於像 創建線程或窗口,從的DLLMain。

相關問題