| File: Windows\Win32\System\Com\IDispatch.Interface.cs | Web Access |
| Project: src\winforms\src\System.Private.Windows.Core\src\System.Private.Windows.Core.csproj (System.Private.Windows.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Windows.Win32.System.Variant; using static WinFormsComWrappers; namespace Windows.Win32.System.Com; internal unsafe partial struct IDispatch : IVTable<IDispatch, IDispatch.Vtbl> { static void IVTable<IDispatch, Vtbl>.PopulateVTable(Vtbl* vtable) { vtable->GetTypeInfoCount_4 = &GetTypeInfoCount; vtable->GetTypeInfo_5 = &GetTypeInfo; vtable->GetIDsOfNames_6 = &GetIDsOfNames; vtable->Invoke_7 = &Invoke; } [UnmanagedCallersOnly(CallConvs = [typeof(CallConvStdcall)])] private static HRESULT GetTypeInfoCount(IDispatch* @this, uint* pctinfo) => UnwrapAndInvoke<IDispatch, Interface>(@this, o => o.GetTypeInfoCount(pctinfo)); [UnmanagedCallersOnly(CallConvs = [typeof(CallConvStdcall)])] private static HRESULT GetTypeInfo(IDispatch* @this, uint iTInfo, uint lcid, ITypeInfo** ppTInfo) => UnwrapAndInvoke<IDispatch, Interface>(@this, o => o.GetTypeInfo(iTInfo, lcid, ppTInfo)); [UnmanagedCallersOnly(CallConvs = [typeof(CallConvStdcall)])] private static HRESULT GetIDsOfNames(IDispatch* @this, Guid* riid, PWSTR* rgszNames, uint cNames, uint lcid, int* rgDispId) => UnwrapAndInvoke<IDispatch, Interface>(@this, o => o.GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId)); [UnmanagedCallersOnly(CallConvs = [typeof(CallConvStdcall)])] private static HRESULT Invoke( IDispatch* @this, int dispIdMember, Guid* riid, uint lcid, DISPATCH_FLAGS dwFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, uint* pArgErr) => UnwrapAndInvoke<IDispatch, Interface>( @this, o => o.Invoke(dispIdMember, riid, lcid, dwFlags, pDispParams, pVarResult, pExcepInfo, pArgErr)); // Marking this as [ComImport] does not work with legacy COM interop. When asking for IDispatch explicitly it // will not look for this interface if it is applied. [Guid("00020400-0000-0000-C000-000000000046")] public unsafe interface Interface { [PreserveSig] HRESULT GetTypeInfoCount( uint* pctinfo); [PreserveSig] HRESULT GetTypeInfo( uint iTInfo, uint lcid, ITypeInfo** ppTInfo); [PreserveSig] HRESULT GetIDsOfNames( Guid* riid, PWSTR* rgszNames, uint cNames, uint lcid, int* rgDispId); [PreserveSig] HRESULT Invoke( int dispIdMember, Guid* riid, uint lcid, DISPATCH_FLAGS dwFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, uint* pArgErr); } }