CoCreateInstance (ole32)
Last changed: -5.202.143.191

.
Summary

C# Signature:

[DllImport("ole32.dll", CharSet=CharSet.Unicode, ExactSpelling=true, PreserveSig=false)]
static extern void CoCreateInstanceEx(
   [In, MarshalAs(UnmanagedType.LPStruct)] Guid rclsid,
   [MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter,
   CLSCTX dwClsCtx,
   IntPtr pServerInfo,
   uint cmq,
   [In, Out] MULTI_QI[] pResults);

User-Defined Types:

CLSCTX, MULTI_QI

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Alternative Managed API:

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

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

If you just want to create an instance on a specific server, you can pass the server name into GetTypeFromCLSID:

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

Documentation