Using DLL that using COM in C#
Posted
by chekalin-v
on Stack Overflow
See other posts from Stack Overflow
or by chekalin-v
Published on 2010-03-16T11:43:13Z
Indexed on
2010/03/16
11:46 UTC
Read the original article
Hit count: 431
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?
© Stack Overflow or respective owner