I have been writing DLL on C++, that will be use in C#. DLL have some function, where I call
hres =  CoInitializeEx(NULL, COINIT_MULTITHREADED); 
and next call
hres =  CoInitializeSecurity(
        NULL, 
        -1,                          // COM authentication
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_PKT,   // Default authentication 
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation  
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities 
        NULL                         // Reserved
        );
There are no error then I trying to use this dll in C++. But if I call function from DLL via C# application I see Error (80010106) Cannot change thread mode after it is set. I changed
hres =  CoInitializeEx(NULL, COINIT_MULTITHREADED);
to
hres = CoInitialize(NULL);
After this changes error appear after CoInitializeSecurity:
(80010119)    Security must be initialized before any
                          interfaces are marshalled or unmarshalled. It
                          cannot be changed once initialized.
How resolve this trouble?