CoInitializeEx (ole32)
Last changed: -5.202.143.191

.
Summary
CoInitializeEx initializes the COM library for use by the calling thread, sets the thread's concurrency model, and creates a new apartment for the thread if one is required. Values for the dwCoInit parameter are taken from the COINIT enumeration. However, since pinvoke is a dotNET construct you should be aware that dotNET already does a COM initialization and therefore calling a CoInitializeEx function most likely will not do what you expect. This problem occurs when trying to instantiate a COM object from within dotNET where the COM objects threading model is different from dotNETs. Search on Common Language Runtime or CLR and COINIT_APARTMENTTHREADED to find posts on this issue.

C# Signature:

[DllImport("ole32.dll")]
static extern int CoInitializeEx(IntPtr pvReserved, uint dwCoInit);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

// Note: PreserveSig=false allows .NET interop to handle processing the returned HRESULT and throw an exception on failure

        [DllImport( "Ole32.dll", ExactSpelling=true, EntryPoint="CoInitializeEx", CallingConvention=CallingConvention.StdCall, SetLastError=false, PreserveSig=false ) ]
        static extern void CoInitializeEx(IntPtr pvReserved, uint dwCoInit);

Alternative Managed API:

Do you know one? Please contribute it!

Documentation