IDispatchEx
using System;
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Windows.Win32.Foundation;
using Windows.Win32.System.Com;
using Windows.Win32.System.Variant;
namespace Windows.Win32.System.Ole
{
[Guid("A6EF9860-C720-11D0-9337-00A0C90DCAA9")]
[GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal struct IDispatchEx : IVTable<IDispatchEx, IDispatchEx.Vtbl>, IVTable, IComIID
{
internal struct Vtbl
{
internal IntPtr QueryInterface_1;
internal IntPtr AddRef_2;
internal IntPtr Release_3;
internal IntPtr GetTypeInfoCount_4;
internal IntPtr GetTypeInfo_5;
internal IntPtr GetIDsOfNames_6;
internal IntPtr Invoke_7;
internal IntPtr GetDispID_8;
internal IntPtr InvokeEx_9;
internal IntPtr DeleteMemberByName_10;
internal IntPtr DeleteMemberByDispID_11;
internal IntPtr GetMemberProperties_12;
internal IntPtr GetMemberName_13;
internal IntPtr GetNextDispID_14;
internal IntPtr GetNameSpaceParent_15;
}
[ComImport]
[Guid("A6EF9860-C720-11D0-9337-00A0C90DCAA9")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
internal interface Interface
{
[PreserveSig]
unsafe HRESULT GetDispID(BSTR bstrName, uint grfdex, int* pid);
[PreserveSig]
unsafe HRESULT InvokeEx(int id, uint lcid, ushort wFlags, DISPPARAMS* pdp, VARIANT* pvarRes = default(VARIANT*), EXCEPINFO* pei = default(EXCEPINFO*), IServiceProvider* pspCaller = default(IServiceProvider*));
[PreserveSig]
HRESULT DeleteMemberByName(BSTR bstrName, uint grfdex);
[PreserveSig]
HRESULT DeleteMemberByDispID(int id);
[PreserveSig]
unsafe HRESULT GetMemberProperties(int id, uint grfdexFetch, FDEX_PROP_FLAGS* pgrfdex);
[PreserveSig]
unsafe HRESULT GetMemberName(int id, BSTR* pbstrName);
[PreserveSig]
unsafe HRESULT GetNextDispID(uint grfdex, int id, int* pid);
[PreserveSig]
unsafe HRESULT GetNameSpaceParent(IUnknown** ppunk);
}
private unsafe void** lpVtbl;
internal static readonly Guid IID_Guid = new Guid(2800719968, 50976, 4560, 147, 55, 0, 160, 201, 13, 202, 169);
[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>.7DFE7DF9726FC5790714F7B4A3AB980052B7375776696718DE7CC17E34C2ED50, 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 GetTypeInfoCount(out uint pctinfo)
{
fixed (uint* pctinfo2 = &pctinfo) {
return GetTypeInfoCount(pctinfo2);
}
}
public unsafe HRESULT GetTypeInfoCount(uint* pctinfo)
{
IntPtr intPtr = (IntPtr)lpVtbl[3];
return (HRESULT);
}
public unsafe HRESULT GetTypeInfo(uint iTInfo, uint lcid, ITypeInfo** ppTInfo)
{
IntPtr intPtr = (IntPtr)lpVtbl[4];
return (HRESULT);
}
internal unsafe HRESULT GetIDsOfNames([In] [IsReadOnly] ref Guid riid, ReadOnlySpan<PWSTR> rgszNames, uint lcid, Span<int> rgDispId)
{
fixed (int* rgDispId2 = &rgDispId.GetPinnableReference()) {
fixed (PWSTR* rgszNames2 = &rgszNames.GetPinnableReference()) {
fixed (Guid* riid2 = &riid) {
if (rgszNames.Length != rgDispId.Length)
throw new ArgumentException();
return GetIDsOfNames(riid2, rgszNames2, (uint)rgDispId.Length, lcid, rgDispId2);
}
}
}
}
public unsafe HRESULT GetIDsOfNames(Guid* riid, PWSTR* rgszNames, uint cNames, uint lcid, int* rgDispId)
{
IntPtr intPtr = (IntPtr)lpVtbl[5];
return (HRESULT);
}
internal unsafe HRESULT Invoke(int dispIdMember, [In] [IsReadOnly] ref Guid riid, uint lcid, DISPATCH_FLAGS wFlags, [In] [IsReadOnly] ref DISPPARAMS pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, uint* puArgErr)
{
fixed (DISPPARAMS* pDispParams2 = &pDispParams) {
fixed (Guid* riid2 = &riid) {
return Invoke(dispIdMember, riid2, lcid, wFlags, pDispParams2, pVarResult, pExcepInfo, puArgErr);
}
}
}
public unsafe HRESULT Invoke(int dispIdMember, Guid* riid, uint lcid, DISPATCH_FLAGS wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult = default(VARIANT*), EXCEPINFO* pExcepInfo = default(EXCEPINFO*), uint* puArgErr = default(uint*))
{
IntPtr intPtr = (IntPtr)lpVtbl[6];
return (HRESULT);
}
internal unsafe HRESULT GetDispID(BSTR bstrName, uint grfdex, out int pid)
{
fixed (int* pid2 = &pid) {
return GetDispID(bstrName, grfdex, pid2);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT GetDispID(IDispatchEx* pThis, BSTR bstrName, uint grfdex, int* pid)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.GetDispID(bstrName, grfdex, pid);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT GetDispID(BSTR bstrName, uint grfdex, int* pid)
{
IntPtr intPtr = (IntPtr)lpVtbl[7];
return (HRESULT);
}
internal unsafe HRESULT InvokeEx(int id, uint lcid, ushort wFlags, [In] [IsReadOnly] ref DISPPARAMS pdp, VARIANT* pvarRes, EXCEPINFO* pei, IServiceProvider* pspCaller)
{
fixed (DISPPARAMS* pdp2 = &pdp) {
return InvokeEx(id, lcid, wFlags, pdp2, pvarRes, pei, pspCaller);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT InvokeEx(IDispatchEx* pThis, int id, uint lcid, ushort wFlags, DISPPARAMS* pdp, VARIANT* pvarRes = default(VARIANT*), EXCEPINFO* pei = default(EXCEPINFO*), IServiceProvider* pspCaller = default(IServiceProvider*))
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.InvokeEx(id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT InvokeEx(int id, uint lcid, ushort wFlags, DISPPARAMS* pdp, VARIANT* pvarRes = default(VARIANT*), EXCEPINFO* pei = default(EXCEPINFO*), IServiceProvider* pspCaller = default(IServiceProvider*))
{
IntPtr intPtr = (IntPtr)lpVtbl[8];
return (HRESULT);
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT DeleteMemberByName(IDispatchEx* pThis, BSTR bstrName, uint grfdex)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.DeleteMemberByName(bstrName, grfdex);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT DeleteMemberByName(BSTR bstrName, uint grfdex)
{
IntPtr intPtr = (IntPtr)lpVtbl[9];
return (HRESULT);
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT DeleteMemberByDispID(IDispatchEx* pThis, int id)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.DeleteMemberByDispID(id);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT DeleteMemberByDispID(int id)
{
IntPtr intPtr = (IntPtr)lpVtbl[10];
return (HRESULT);
}
internal unsafe HRESULT GetMemberProperties(int id, uint grfdexFetch, out FDEX_PROP_FLAGS pgrfdex)
{
fixed (FDEX_PROP_FLAGS* pgrfdex2 = &pgrfdex) {
return GetMemberProperties(id, grfdexFetch, pgrfdex2);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT GetMemberProperties(IDispatchEx* pThis, int id, uint grfdexFetch, FDEX_PROP_FLAGS* pgrfdex)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.GetMemberProperties(id, grfdexFetch, pgrfdex);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT GetMemberProperties(int id, uint grfdexFetch, FDEX_PROP_FLAGS* pgrfdex)
{
IntPtr intPtr = (IntPtr)lpVtbl[11];
return (HRESULT);
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT GetMemberName(IDispatchEx* pThis, int id, BSTR* pbstrName)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.GetMemberName(id, pbstrName);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT GetMemberName(int id, BSTR* pbstrName)
{
IntPtr intPtr = (IntPtr)lpVtbl[12];
return (HRESULT);
}
internal unsafe HRESULT GetNextDispID(uint grfdex, int id, out int pid)
{
fixed (int* pid2 = &pid) {
return GetNextDispID(grfdex, id, pid2);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT GetNextDispID(IDispatchEx* pThis, uint grfdex, int id, int* pid)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.GetNextDispID(grfdex, id, pid);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT GetNextDispID(uint grfdex, int id, int* pid)
{
IntPtr intPtr = (IntPtr)lpVtbl[13];
return (HRESULT);
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT GetNameSpaceParent(IDispatchEx* pThis, IUnknown** ppunk)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDispatchEx, Interface>(pThis, out object);
if (!result.Failed)
return object.GetNameSpaceParent(ppunk);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT GetNameSpaceParent(IUnknown** ppunk)
{
IntPtr intPtr = (IntPtr)lpVtbl[14];
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->GetDispID_8 = (IntPtr)(void*);
vtable->InvokeEx_9 = (IntPtr)(void*);
vtable->DeleteMemberByName_10 = (IntPtr)(void*);
vtable->DeleteMemberByDispID_11 = (IntPtr)(void*);
vtable->GetMemberProperties_12 = (IntPtr)(void*);
vtable->GetMemberName_13 = (IntPtr)(void*);
vtable->GetNextDispID_14 = (IntPtr)(void*);
vtable->GetNameSpaceParent_15 = (IntPtr)(void*);
}
unsafe void IVTable<IDispatchEx, Vtbl>.PopulateVTable(Vtbl* vtable)
{
this.PopulateVTable(vtable);
}
}
}