Export (0) Print
Expand All

Marshal.GetDelegateForFunctionPointer(TDelegate) Method (IntPtr)

[Supported in the .NET Framework 4.5.1 and later versions]

Converts an unmanaged function pointer to a delegate of a specified type.

Namespace:  System.Runtime.InteropServices
Assemblies:   System.Runtime.InteropServices (in System.Runtime.InteropServices.dll)
  mscorlib (in mscorlib.dll)

static member GetDelegateForFunctionPointer : 
        ptr:IntPtr -> 'TDelegate 

Type Parameters


The type of the delegate to return.


Type: System.IntPtr

The unmanaged function pointer to convert.

Return Value

Type: TDelegate
A instance of the specified delegate type.


The TDelegate generic parameter is not a delegate, or it is an open generic type.


The ptr parameter is a null reference (Nothing in Visual Basic).

You can use the GetDelegateForFunctionPointer(TDelegate)(IntPtr) and GetFunctionPointerForDelegate(TDelegate)(TDelegate) methods to marshal delegates in both directions.

The GetDelegateForFunctionPointer(TDelegate)(IntPtr) method has the following restrictions:

  • You cannot pass an invalid function pointer to this method.

  • You can use this method only for pure unmanaged function pointers.

  • You cannot use this method with function pointers obtained through C++ or from the GetFunctionPointer method.

  • You cannot use this method to create a delegate from a function pointer to another managed delegate.

.NET Framework

Supported in: 4.6, 4.5.1

Supported in: Windows Phone 8.1

  • SecurityCriticalAttribute 

    requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

© 2015 Microsoft