Marshal.GetDelegateForFunctionPointer Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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. |
- 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.
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) |
- 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
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 |
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: