【问题标题】:CoCreateInstance() never returnsCoCreateInstance() 永远不会返回
【发布时间】:2012-10-02 22:49:56
【问题描述】:

我有一个 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 选项,但无济于事。感谢您提供任何反馈或想法。

【问题讨论】:

    标签: c++ c com


    【解决方案1】:

    还有,来自马口:http://support.microsoft.com/kb/305723

    【讨论】:

      【解决方案2】:

      来自this question

      您不应该进行任何 API 调用,尤其是对于诸如此类的事情 从 DLLMain 创建线程或窗口。

      【讨论】:

        猜你喜欢
        • 2019-11-15
        • 2011-07-25
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多