CoCreateInstance()永远不会返回

时间:2012-10-12 06:45:58

标签: c++ c com

我有一个DLL,我需要在其中调用CoCreateInstance()。在Dllmain()中,我创建了一个新线程来运行我的函数do_stuff()。 CoCreateInstance()在do_stuff()中调用,如下所示。

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选项,但无济于事。任何反馈或想法都表示赞赏。

2 个答案:

答案 0 :(得分:2)

另外,从马的嘴里:http://support.microsoft.com/kb/305723

答案 1 :(得分:1)

来自this question

  

您不应该进行任何API调用,特别是对于类似的事情   从DLLMain创建线程或窗口。