CoCreateInstance (ole32)
Last changed: -5.202.143.191

.
Summary

C# Signature:

[DllImport("ole32.dll", ExactSpelling=true, PreserveSig=false)]

[return: MarshalAs(UnmanagedType.Interface)]

static extern object CoCreateInstance(

[In, MarshalAs(UnmanagedType.LPStruct)] Guid rclsid,

[MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter,

CLSCTX dwClsContext,

[In, MarshalAs(UnmanagedType.LPStruct)] Guid riid

);

C# Alternative Signature:

[DllImport("ole32.dll", EntryPoint = "CoCreateInstance", CallingConvention = CallingConvention.StdCall)]

static extern UInt32 CoCreateInstance(

[In, MarshalAs(UnmanagedType.LPStruct)] Guid rclsid,

IntPtr pUnkOuter,

UInt32 dwClsContext,

[In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
   out IntPtr ppv

);

VB Signature:

<DllImport("ole32.dll", ExactSpelling:=True, PreserveSig:=False)> _
Function CoCreateInstance( _
    ByRef clsid As Guid, _
    <MarshalAs(UnmanagedType.Interface)> ByVal punkOuter As Object, _
    ByVal context As Integer, _
    ByRef iid As Guid) _
    As <MarshalAs(UnmanagedType.Interface)> Object
End Function

User-Defined Types:

CLSCTX

Notes:

None.

Tips & Tricks:

Sample:

Guid CLSID_ShellDesktop = new Guid("00021400-0000-0000-C000-000000000046");
Type shellDesktopType = Type.GetTypeFromCLSID(CLSID_ShellDesktop, true);
object shellDesktop = Activator.CreateInstance(shellDesktopType);

Sample Code:

Please add some!

Alternative Managed API:

Have a look at System.Activator.CreateInstance and its various overloads.

Documentation