private static extern Result CoCreateInstanceFromApp([In][MarshalAs(UnmanagedType.LPStruct)] Guid rclsid, IntPtr pUnkOuter, ComContext dwClsContext, IntPtr reserved, int countMultiQuery, ref MultiQueryInterface query);
public unsafe static bool TryCreateComInstance(Guid clsid, CLSCTX clsctx, Guid riid, ComObject comObject) { MultiQueryInterface localQuery = new MultiQueryInterface() { InterfaceIID = new IntPtr(&riid), IUnknownPointer = IntPtr.Zero, ResultCode = 0, }; var result = CoCreateInstanceFromApp(clsid, IntPtr.Zero, clsctx, IntPtr.Zero, 1, ref localQuery); comObject.NativePointer = localQuery.IUnknownPointer; return(result.Success && localQuery.ResultCode.Success); }
public unsafe static void CreateComInstance(Guid clsid, CLSCTX clsctx, Guid riid, ComObject comObject) { MultiQueryInterface localQuery = new MultiQueryInterface() { InterfaceIID = new IntPtr(&riid), IUnknownPointer = IntPtr.Zero, ResultCode = 0, }; var result = CoCreateInstanceFromApp(clsid, IntPtr.Zero, clsctx, IntPtr.Zero, 1, ref localQuery); result.CheckError(); localQuery.ResultCode.CheckError(); comObject.NativePointer = localQuery.IUnknownPointer; }
public static unsafe bool TryCreateComInstance(Guid classGuid, ComContext context, Guid interfaceGuid, ComObject comObject) { if (!PlatformDetection.IsUAP) { var result = CoCreateInstance(classGuid, IntPtr.Zero, context, interfaceGuid, out IntPtr pointer); comObject.NativePointer = pointer; return(result.Success); } else { var localQuery = new MultiQueryInterface() { InterfaceIID = new IntPtr(&interfaceGuid), IUnknownPointer = IntPtr.Zero, ResultCode = 0, }; var result = CoCreateInstanceFromApp(classGuid, IntPtr.Zero, context, IntPtr.Zero, 1, ref localQuery); comObject.NativePointer = localQuery.IUnknownPointer; return(result.Success && localQuery.ResultCode.Success); } }
public unsafe static void CreateComInstance(Guid classGuid, ComContext context, Guid interfaceGuid, ComObject comObject) { if (!VorticePlatformDetection.IsUAP) { var result = CoCreateInstance(classGuid, IntPtr.Zero, context, interfaceGuid, out IntPtr pointer); result.CheckError(); comObject.NativePointer = pointer; } else { var localQuery = new MultiQueryInterface() { InterfaceIID = new IntPtr(&interfaceGuid), IUnknownPointer = IntPtr.Zero, ResultCode = 0, }; var result = CoCreateInstanceFromApp(classGuid, IntPtr.Zero, context, IntPtr.Zero, 1, ref localQuery); result.CheckError(); localQuery.ResultCode.CheckError(); comObject.NativePointer = localQuery.IUnknownPointer; } }
public static unsafe Result CreateComInstanceRestricted(Guid classGuid, ComContext context, Guid interfaceGuid, out IntPtr comObject) { var localQuery = new MultiQueryInterface { InterfaceIID = new IntPtr(&interfaceGuid), IUnknownPointer = IntPtr.Zero, ResultCode = 0 }; var result = CoCreateInstanceFromApp(classGuid, IntPtr.Zero, context, IntPtr.Zero, 1, ref localQuery); comObject = localQuery.IUnknownPointer; if (!result.Success) { return(result); } if (!localQuery.ResultCode.Success) { return(localQuery.ResultCode); } if (result != Result.Ok) { return(result); } if (localQuery.ResultCode != Result.Ok) { return(localQuery.ResultCode); } return(Result.Ok); }