//==================================================================== // Checks if "t" is MCG generated , if not fallback to public API //==================================================================== public static Delegate GetDelegateForFunctionPointer(IntPtr ptr, Type t) { Delegate dlg = MarshalImpl.GetDelegateForFunctionPointer(ptr, t); #if CORECLR if (dlg == null) // fall back to public marshal API { return(Marshal.GetDelegateForFunctionPointer(ptr, t)); } #endif return(dlg); }
//==================================================================== // return an Object for IUnknown //==================================================================== public static Object GetObjectForIUnknown(IntPtr /* IUnknown* */ pUnk) { object obj = MarshalImpl.GetObjectForIUnknown(pUnk); #if CORECLR if (obj == null) { return(Marshal.GetObjectForIUnknown(pUnk)); } #endif return(obj); }
public static IntPtr /* IUnknown* */ GetComInterfaceForObject(Object o, Type T) { IntPtr ptr = MarshalImpl.GetComInterfaceForObject(o, T); #if CORECLR if (ptr == default(IntPtr)) { return(Marshal.GetComInterfaceForObject(o, T)); } #endif return(ptr); }
public static bool IsComObject(object o) { return(MarshalImpl.IsComObject(o)); }
#pragma warning disable 618 // error CS0618: '%' is obsolete: //==================================================================== // return the IUnknown* for an Object if the current context // is the one where the RCW was first seen. Will return null // otherwise. //==================================================================== public static IntPtr /* IUnknown* */ GetIUnknownForObject(Object o) { return(MarshalImpl.GetIUnknownForObject(o)); }
public static int Release(IntPtr pUnk) { return(MarshalImpl.Release(pUnk)); }
public static int AddRef(IntPtr pUnk) { return(MarshalImpl.AddRef(pUnk)); }
public static int QueryInterface(IntPtr pUnk, ref Guid iid, out IntPtr ppv) { return(MarshalImpl.QueryInterface(pUnk, ref iid, out ppv)); }
public static int FinalReleaseComObject(object o) { return(MarshalImpl.FinalReleaseComObject(o)); }