Partilhar via


Marshal.GetDelegateForFunctionPointer Método

Definição

Sobrecargas

GetDelegateForFunctionPointer(IntPtr, Type)
Obsoleto.

Converte um ponteiro de função não gerenciada em um delegado.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Converte um ponteiro de função não gerenciada em um delegado de um tipo especificado.

GetDelegateForFunctionPointer(IntPtr, Type)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Cuidado

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

Converte um ponteiro de função não gerenciada em um delegado.

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

Parâmetros

ptr
IntPtr

nativeint

O ponteiro de função não gerenciada a ser convertido.

t
Type

O tipo do delegado a ser retornado.

Retornos

Uma instância de delegado que pode ser convertida para o tipo de delegado apropriado.

Atributos

Exceções

O parâmetro t não é um delegado ou é genérico.

O parâmetro ptr é null.

- ou -

O parâmetro t é null.

Comentários

Você pode usar os GetDelegateForFunctionPointer métodos e GetFunctionPointerForDelegate para realizar marshaling de delegados em ambas as direções. Com GetDelegateForFunctionPointer, ptr é importado como um System.IntPtr. Um System.IntPtr pode ser obtido para um delegado gerenciado chamando GetFunctionPointerForDelegate e passado como um parâmetro; em seguida, ele pode ser chamado de dentro do método não gerenciado. Observe que o marshaler de parâmetros também pode realizar marshaling de ponteiros de função para delegados no .NET Framework 2.0 e versões posteriores.

ptr é convertido em um delegado que invoca o método não gerenciado usando a convenção de chamada de plataforma padrão. Você pode definir a convenção de chamada aplicando o UnmanagedFunctionPointerAttribute ao delegado.

O GetDelegateForFunctionPointer método tem as seguintes restrições:

  • Não há suporte para genéricos em cenários de interoperabilidade.

  • Você pode usar esse método somente para ponteiros de função não gerenciados puros.

  • Não é possível usar esse método com ponteiros de função obtidos por meio do C++.

Aplica-se a

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Converte um ponteiro de função não gerenciada em um delegado de um tipo especificado.

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

Parâmetros de tipo

TDelegate

O tipo do delegado a ser retornado.

Parâmetros

ptr
IntPtr

nativeint

O ponteiro de função não gerenciada a ser convertido.

Retornos

TDelegate

Uma instância do tipo de delegado especificado.

Atributos

Exceções

O parâmetro genérico TDelegate não é um delegado ou é um tipo genérico aberto.

O parâmetro ptr é null.

Comentários

Você pode usar os GetDelegateForFunctionPointer<TDelegate>(IntPtr) métodos e GetFunctionPointerForDelegate<TDelegate>(TDelegate) para realizar marshaling de delegados em ambas as direções.

ptr é convertido em um delegado que invoca o método não gerenciado usando a convenção de chamada de plataforma padrão. Você pode definir a convenção de chamada aplicando o UnmanagedFunctionPointerAttribute ao delegado.

O GetDelegateForFunctionPointer<TDelegate>(IntPtr) método tem as seguintes restrições:

  • Não há suporte para genéricos em cenários de interoperabilidade.

  • Você pode usar esse método somente para ponteiros de função não gerenciados puros.

  • Não é possível usar esse método com ponteiros de função obtidos por meio do C++.

Aplica-se a