Marshal.GetDelegateForFunctionPointer Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Overloads
GetDelegateForFunctionPointer(IntPtr, Type) |
Obsolete.
Converts an unmanaged function pointer to a delegate. |
GetDelegateForFunctionPointer<TDelegate>(IntPtr) |
Converts an unmanaged function pointer to a delegate of a specified type. |
GetDelegateForFunctionPointer(IntPtr, Type)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Caution
GetDelegateForFunctionPointer(IntPtr, Type) may be unavailable in future releases. Instead, use GetDelegateForFunctionPointer<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296521
Converts an unmanaged function pointer to a delegate.
public:
static Delegate ^ GetDelegateForFunctionPointer(IntPtr ptr, Type ^ t);
[System.Obsolete("GetDelegateForFunctionPointer(IntPtr, Type) may be unavailable in future releases. Instead, use GetDelegateForFunctionPointer<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296521")]
[System.Security.SecurityCritical]
public static Delegate GetDelegateForFunctionPointer (IntPtr ptr, Type t);
public static Delegate GetDelegateForFunctionPointer (IntPtr ptr, Type t);
[System.Security.SecurityCritical]
public static Delegate GetDelegateForFunctionPointer (IntPtr ptr, Type t);
[<System.Obsolete("GetDelegateForFunctionPointer(IntPtr, Type) may be unavailable in future releases. Instead, use GetDelegateForFunctionPointer<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296521")>]
[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
Public Shared Function GetDelegateForFunctionPointer (ptr As IntPtr, t As Type) As Delegate
Parameters
- ptr
-
IntPtr
nativeint
The unmanaged function pointer to be converted.
- t
- Type
The type of the delegate to be returned.
Returns
A delegate instance that can be cast to the appropriate delegate type.
- Attributes
Exceptions
The t
parameter is not a delegate or is generic.
Remarks
You can use the GetDelegateForFunctionPointer and GetFunctionPointerForDelegate methods to marshal delegates in both directions. With GetDelegateForFunctionPointer, ptr
is imported as a System.IntPtr. A System.IntPtr can be obtained for a managed delegate by calling GetFunctionPointerForDelegate and passed as a parameter; it can then be called from inside the unmanaged method. Note that the parameter marshaler can also marshal function pointers to delegates in the .NET Framework 2.0 and later versions.
ptr
is converted to a delegate that invokes the unmanaged method using the default platform calling convention. You can set the calling convention by applying the UnmanagedFunctionPointerAttribute to the delegate.
The GetDelegateForFunctionPointer method has the following restrictions:
Generics are not supported in interop scenarios.
You can use this method only for pure unmanaged function pointers.
You cannot use this method with function pointers obtained through C++.
Applies to
GetDelegateForFunctionPointer<TDelegate>(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Converts an unmanaged function pointer to a delegate of a specified type.
public:
generic <typename TDelegate>
static TDelegate GetDelegateForFunctionPointer(IntPtr ptr);
[System.Security.SecurityCritical]
public static TDelegate GetDelegateForFunctionPointer<TDelegate> (IntPtr ptr);
public static TDelegate GetDelegateForFunctionPointer<TDelegate> (IntPtr ptr);
[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint -> 'Delegate
static member GetDelegateForFunctionPointer : nativeint -> 'Delegate
Public Shared Function GetDelegateForFunctionPointer(Of TDelegate) (ptr As IntPtr) As TDelegate
Type Parameters
- TDelegate
The type of the delegate to return.
Parameters
- ptr
-
IntPtr
nativeint
The unmanaged function pointer to convert.
Returns
A instance of the specified delegate type.
- Attributes
Exceptions
The TDelegate
generic parameter is not a delegate, or it is an open generic type.
The ptr
parameter is null
.
Remarks
You can use the GetDelegateForFunctionPointer<TDelegate>(IntPtr) and GetFunctionPointerForDelegate<TDelegate>(TDelegate) methods to marshal delegates in both directions.
ptr
is converted to a delegate that invokes the unmanaged method using the default platform calling convention. You can set the calling convention by applying the UnmanagedFunctionPointerAttribute to the delegate.
The GetDelegateForFunctionPointer<TDelegate>(IntPtr) method has the following restrictions:
Generics are not supported in interop scenarios.
You can use this method only for pure unmanaged function pointers.
You cannot use this method with function pointers obtained through C++.