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.

[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);

Parâmetros

ptr
IntPtr

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

.NET 9 e outras versões
Produto Versões (Obsoleto)
.NET Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 (Core 1.0)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 2.0, 2.1 (1.2, 1.3, 1.4, 1.5, 1.6)
UWP (10.0)

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.

[System.Security.SecurityCritical]
public static TDelegate GetDelegateForFunctionPointer<TDelegate> (IntPtr ptr);
public static TDelegate GetDelegateForFunctionPointer<TDelegate> (IntPtr ptr);

Parâmetros de tipo

TDelegate

O tipo do delegado a ser retornado.

Parâmetros

ptr
IntPtr

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

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0