CoInitializeSecurity错误

Ale*_*ruC 4 windows com visual-c++

我有一个加载1.dll和1.dll加载1_1.dll的.exe。在.exe中,我创建了多个线程,从其中一个调用了一个函数,该线程调用了一个1.dll函数,而在其他事情之间..则从1_1.dll调用了一个函数,但这样做失败:

//  Initialize COM.
    HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
    if( FAILED(hr) )
    {
        //m_iStatus = ERROR_COINITIALIZE_EX;
        return;
    }
    //  Set general COM security levels.
    hr = CoInitializeSecurity(
        NULL,
        -1,
        NULL,
        NULL,
        RPC_C_AUTHN_LEVEL_PKT_PRIVACY,
        RPC_C_IMP_LEVEL_IMPERSONATE,
        NULL,
        0,
        NULL);
    if( FAILED(hr) )
    {
        CoUninitialize();
        //m_iStatus = ERROR_COINITIALIZE_SEC;
        return;
    }
Run Code Online (Sandbox Code Playgroud)

它使用以下消息在对CoInitializeSecurity的调用中失败:

必须先对安全性进行初始化,然后再对任何接口进行编组或取消编组。初始化后便无法更改。

谁能解释我这里发生的事情,我做错了什么以及应该如何解决?

Rom*_* R. 5

CoInitializeSecurity函数 ...

...在每个进程中被调用一次,无论是显式还是隐式

DLL可能需要调用的唯一情况CoInitializeSecurity是将其加载到进程中时,众所周知它不能自行初始化COM。该过程基本上是DLL的瘦主机。也就是说,几乎永远不会。

这是.EXE要做的任务CoInitializeSecurity