我有一个DLL,我需要在其中调用CoCreateInstance()。在Dllmain()中,我创建了一个新线程来运行函数do_stuff()。在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选项,但无济于事。任何反馈或想法表示赞赏。

最佳答案

另外,从马口上来说:http://support.microsoft.com/kb/305723

关于c++ - CoCreateInstance()永不返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12853684/

10-10 14:13