IDropTargetHelper
using System;
using System.CodeDom.Compiler;
using System.Drawing;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using Windows.Win32.Foundation;
using Windows.Win32.System.Com;
using Windows.Win32.System.Ole;
namespace Windows.Win32.UI.Shell
{
[Guid("4657278B-411B-11D2-839A-00C04FD918D0")]
[SupportedOSPlatform("windows5.0")]
[GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal struct IDropTargetHelper : IVTable<IDropTargetHelper, IDropTargetHelper.Vtbl>, IVTable, IComIID
{
internal struct Vtbl
{
internal IntPtr QueryInterface_1;
internal IntPtr AddRef_2;
internal IntPtr Release_3;
internal IntPtr DragEnter_4;
internal IntPtr DragLeave_5;
internal IntPtr DragOver_6;
internal IntPtr Drop_7;
internal IntPtr Show_8;
}
[ComImport]
[Guid("4657278B-411B-11D2-839A-00C04FD918D0")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[SupportedOSPlatform("windows5.0")]
internal interface Interface
{
[PreserveSig]
unsafe HRESULT DragEnter(HWND hwndTarget, IDataObject* pDataObject, Point* ppt, DROPEFFECT dwEffect);
[PreserveSig]
HRESULT DragLeave();
[PreserveSig]
unsafe HRESULT DragOver(Point* ppt, DROPEFFECT dwEffect);
[PreserveSig]
unsafe HRESULT Drop(IDataObject* pDataObject, Point* ppt, DROPEFFECT dwEffect);
[PreserveSig]
HRESULT Show(BOOL fShow);
}
private unsafe void** lpVtbl;
internal static readonly Guid IID_Guid = new Guid(1180116875, 16667, 4562, 131, 154, 0, 192, 79, 217, 24, 208);
[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>.761424898805ACEF77296028EB8485404FD3CCBB26A006E60C873BD03AA21CB1, 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 DragEnter(HWND hwndTarget, IDataObject* pDataObject, [In] [IsReadOnly] ref Point ppt, DROPEFFECT dwEffect)
{
fixed (Point* ppt2 = &ppt) {
return DragEnter(hwndTarget, pDataObject, ppt2, dwEffect);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT DragEnter(IDropTargetHelper* pThis, HWND hwndTarget, IDataObject* pDataObject, Point* ppt, DROPEFFECT dwEffect)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDropTargetHelper, Interface>(pThis, out object);
if (!result.Failed)
return object.DragEnter(hwndTarget, pDataObject, ppt, dwEffect);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT DragEnter(HWND hwndTarget, IDataObject* pDataObject, Point* ppt, DROPEFFECT dwEffect)
{
IntPtr intPtr = (IntPtr)lpVtbl[3];
return (HRESULT);
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT DragLeave(IDropTargetHelper* pThis)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDropTargetHelper, Interface>(pThis, out object);
if (!result.Failed)
return object.DragLeave();
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT DragLeave()
{
IntPtr intPtr = (IntPtr)lpVtbl[4];
return (HRESULT);
}
internal unsafe HRESULT DragOver([In] [IsReadOnly] ref Point ppt, DROPEFFECT dwEffect)
{
fixed (Point* ppt2 = &ppt) {
return DragOver(ppt2, dwEffect);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT DragOver(IDropTargetHelper* pThis, Point* ppt, DROPEFFECT dwEffect)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDropTargetHelper, Interface>(pThis, out object);
if (!result.Failed)
return object.DragOver(ppt, dwEffect);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT DragOver(Point* ppt, DROPEFFECT dwEffect)
{
IntPtr intPtr = (IntPtr)lpVtbl[5];
return (HRESULT);
}
internal unsafe HRESULT Drop(IDataObject* pDataObject, [In] [IsReadOnly] ref Point ppt, DROPEFFECT dwEffect)
{
fixed (Point* ppt2 = &ppt) {
return Drop(pDataObject, ppt2, dwEffect);
}
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT Drop(IDropTargetHelper* pThis, IDataObject* pDataObject, Point* ppt, DROPEFFECT dwEffect)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDropTargetHelper, Interface>(pThis, out object);
if (!result.Failed)
return object.Drop(pDataObject, ppt, dwEffect);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT Drop(IDataObject* pDataObject, Point* ppt, DROPEFFECT dwEffect)
{
IntPtr intPtr = (IntPtr)lpVtbl[6];
return (HRESULT);
}
[UnmanagedCallersOnly(CallConvs = new Type[] {
typeof(CallConvStdcall)
})]
private unsafe static HRESULT Show(IDropTargetHelper* pThis, BOOL fShow)
{
try {
Interface object;
HRESULT result = ComHelpers.UnwrapCCW<IDropTargetHelper, Interface>(pThis, out object);
if (!result.Failed)
return object.Show(fShow);
return result;
} catch (Exception ex) {
return (HRESULT)ex.HResult;
}
}
public unsafe HRESULT Show(BOOL fShow)
{
IntPtr intPtr = (IntPtr)lpVtbl[7];
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->DragEnter_4 = (IntPtr)(void*);
vtable->DragLeave_5 = (IntPtr)(void*);
vtable->DragOver_6 = (IntPtr)(void*);
vtable->Drop_7 = (IntPtr)(void*);
vtable->Show_8 = (IntPtr)(void*);
}
unsafe void IVTable<IDropTargetHelper, Vtbl>.PopulateVTable(Vtbl* vtable)
{
this.PopulateVTable(vtable);
}
}
}