<PackageReference Include="System.Drawing.Common" Version="10.0.0-rc.2.25502.107" />

IServiceProvider

using System; using System.CodeDom.Compiler; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Windows.Win32.Foundation; namespace Windows.Win32.System.Com { [Guid("6D5140C1-7436-11CE-8034-00AA006009FA")] [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")] internal struct IServiceProvider : IVTable<IServiceProvider, IServiceProvider.Vtbl>, IVTable, IComIID { internal struct Vtbl { internal IntPtr QueryInterface_1; internal IntPtr AddRef_2; internal IntPtr Release_3; internal IntPtr QueryService_4; } [ComImport] [Guid("6D5140C1-7436-11CE-8034-00AA006009FA")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface Interface { [PreserveSig] unsafe HRESULT QueryService(Guid* guidService, Guid* riid, void** ppvObject); } private unsafe void** lpVtbl; internal static readonly Guid IID_Guid = new Guid(1834041537, 29750, 4558, 128, 52, 0, 170, 0, 96, 9, 250); [IsReadOnly] static unsafe ref Guid IComIID.Guid { [MethodImpl(MethodImplOptions.AggressiveInlining)] [return: IsReadOnly] get { return ref Unsafe.As<byte, Guid>(ref MemoryMarshal.GetReference(new ReadOnlySpan<byte>(&global::<PrivateImplementationDetails>.B45DB5646EE7DDF3F39E924A77707F8067E84BBAF55C0CEABCCE8198AA933225, 16))); } } internal unsafe HRESULT QueryInterface([In] [IsReadOnly] ref Guid riid, out void* ppvObject) { fixed (void** ppvObject2 = &ppvObject) { fixed (Guid* riid2 = &riid) { return QueryInterface(riid2, ppvObject2); } } } public unsafe HRESULT QueryInterface(Guid* riid, void** ppvObject) { IntPtr intPtr = (IntPtr)(*lpVtbl); return (HRESULT); } public unsafe uint AddRef() { IntPtr intPtr = (IntPtr)lpVtbl[1]; return (uint); } public unsafe uint Release() { IntPtr intPtr = (IntPtr)lpVtbl[2]; return (uint); } internal unsafe HRESULT QueryService([In] [IsReadOnly] ref Guid guidService, [In] [IsReadOnly] ref Guid riid, out void* ppvObject) { fixed (void** ppvObject2 = &ppvObject) { fixed (Guid* riid2 = &riid) { fixed (Guid* guidService2 = &guidService) { return QueryService(guidService2, riid2, ppvObject2); } } } } [UnmanagedCallersOnly(CallConvs = new Type[] { typeof(CallConvStdcall) })] private unsafe static HRESULT QueryService(IServiceProvider* pThis, Guid* guidService, Guid* riid, void** ppvObject) { try { Interface object; HRESULT result = ComHelpers.UnwrapCCW<IServiceProvider, Interface>(pThis, out object); if (!result.Failed) return object.QueryService(guidService, riid, ppvObject); return result; } catch (Exception ex) { return (HRESULT)ex.HResult; } } public unsafe HRESULT QueryService(Guid* guidService, Guid* riid, void** ppvObject) { IntPtr intPtr = (IntPtr)lpVtbl[3]; return (HRESULT); } internal unsafe HRESULT QueryInterface<[IsUnmanaged] T>(out T* ppv) where T : struct { Guid riid = typeof(T).GUID; void* ppvObject; HRESULT result = QueryInterface(ref riid, out ppvObject); if (result.Succeeded) ppv = (T*)ppvObject; else ppv = null; return result; } public unsafe static void PopulateVTable(Vtbl* vtable) { vtable->QueryService_4 = (IntPtr)(void*); } unsafe void IVTable<IServiceProvider, Vtbl>.PopulateVTable(Vtbl* vtable) { this.PopulateVTable(vtable); } } }