Nota: este método es nuevo en la versión 2.0 de .NET Framework.
Convierte un puntero a función no administrado en un delegado.
Espacio de nombres: System.Runtime.InteropServices
Ensamblado: mscorlib (en mscorlib.dll)

Sintaxis
Visual Basic (Declaración)
Public Shared Function GetDelegateForFunctionPointer ( _
ptr As IntPtr, _
t As Type _
) As Delegate
Dim ptr As IntPtr
Dim t As Type
Dim returnValue As Delegate
returnValue = Marshal.GetDelegateForFunctionPointer(ptr, t)
public static Delegate GetDelegateForFunctionPointer (
IntPtr ptr,
Type t
)
public:
static Delegate^ GetDelegateForFunctionPointer (
IntPtr ptr,
Type^ t
)
public static Delegate GetDelegateForFunctionPointer (
IntPtr ptr,
Type t
)
public static function GetDelegateForFunctionPointer (
ptr : IntPtr,
t : Type
) : Delegate
Parámetros
- ptr
Tipo System.IntPtr que es el puntero a función no administrado que se va a convertir.
- t
Tipo del delegado que se va a devolver.
Valor devuelto
Instancia de delegado que se puede convertir al tipo de delegado adecuado.

Excepciones
| Tipo de excepción | Condición |
|---|
ArgumentException | El parámetro t no es un delegado. |
ArgumentNullException | El parámetro ptr es referencia de objeto null (Nothing en Visual Basic). O bien El parámetro t es referencia de objeto null (Nothing en Visual Basic). |

Comentarios
En versiones 1.0 y 1.1 de .NET Framework, era posible pasar un delegado que representaba un método administrado a código no administrado como un puntero a función, lo que permitía que el código no administrado llamara al método administrado mediante el puntero a función. También era posible que el código no administrado pasara ese puntero a función de nuevo al código administrado y el puntero se resolvía correctamente en el método administrado subyacente.
Con este nuevo método, GetDelegateForFunctionPointer y, un segundo nuevo método, GetFunctionPointerForDelegate, ahora puede calcular referencias de delegados en ambas direcciones. Con el método GetDelegateForFunctionPointer, ptr se importa como IntPtr; se puede obtener una estructura IntPtr para un delegado administrado llamando al método GetFunctionPointerForDelegate y, a continuación, se puede pasar como parámetro; después ya puede llamarse desde el método no administrado. Observe que el contador de referencias de parámetro también puede calcular las referencias de los punteros a función a los delegados en la versión 2.0.
Nota |
|---|
| No puede pasar un puntero a función no válido al método GetDelegateForFunctionPointer. Además, sólo puede utilizar este método para meros punteros a función no administrados. No puede utilizar este método con punteros a función obtenidos a través de C++ o de GetFunctionPointer. No puede utilizar este método para crear un delegado a partir de un puntero a función a otro delegado administrado. |

Seguridad de .NET Framework

Plataformas
Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

Información de versión
.NET Framework
Compatible con: 2.0

Vea también