Marshal.GetDelegateForFunctionPointer Méthode

Définition

Surcharges

GetDelegateForFunctionPointer(IntPtr, Type)
Obsolète.

Convertit un pointeur fonction non managé en un délégué.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

[Pris en charge dans le .NET Framework 4.5.1 et versions ultérieures]

Convertit un pointeur fonction non managé en un délégué d'un type spécifié.

GetDelegateForFunctionPointer(IntPtr, Type)

Attention

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

Convertit un pointeur fonction non managé en un délégué.

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

Paramètres

ptr
IntPtr

nativeint

Pointeur vers la fonction non managée à convertir.

t
Type

Type du délégué à retourner.

Retours

Delegate

Instance de délégué qui peut être castée en type délégué approprié.

Attributs

Exceptions

Le paramètre t n'est pas un délégué ou est générique.

Le paramètre ptr a la valeur null.

  • ou -

Le paramètre t a la valeur null.

Remarques

Dans les versions 1.0 et 1.1 du .NET Framework, il était possible de passer un délégué représentant une méthode managée au code non managé en tant que pointeur de fonction, ce qui permet au code non managé d’appeler la méthode managée via le pointeur de fonction. Il était également possible pour le code non managé de transmettre ce pointeur de fonction au code managé, et le pointeur a été résolu correctement vers la méthode managée sous-jacente.

Dans .NET Framework 2.0 et versions ultérieures, vous pouvez utiliser les méthodes et GetFunctionPointerForDelegate les GetDelegateForFunctionPointer méthodes pour marshaler les délégués dans les deux sens. Avec GetDelegateForFunctionPointer, ptr est importé en tant que System.IntPtr. Un System.IntPtr délégué managé peut être obtenu en appelant GetFunctionPointerForDelegate et passé en tant que paramètre; il peut ensuite être appelé à partir de la méthode non managée. Notez que le marshaleur de paramètres peut également marshaler des pointeurs de fonction vers des délégués dans .NET Framework 2.0 et versions ultérieures.

ptr est converti en délégué qui appelle la méthode non managée à l’aide de la convention d’appel __stdcall sur Windows ou de la convention d’appel __cdecl sur Linux et macOS. Vous pouvez définir la convention d’appel en appliquant le UnmanagedFunctionPointerAttribute délégué.

La GetDelegateForFunctionPointer méthode a les restrictions suivantes :

  • Les génériques ne sont pas pris en charge dans les scénarios d’interopérabilité.

  • Vous pouvez utiliser cette méthode uniquement pour les pointeurs de fonction non managés purs.

  • Vous ne pouvez pas utiliser cette méthode avec des pointeurs de fonction obtenus via C++.

S’applique à

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

[Pris en charge dans le .NET Framework 4.5.1 et versions ultérieures]

Convertit un pointeur fonction non managé en un délégué d'un type spécifié.

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

Paramètres de type

TDelegate

Type de délégué à retourner.

Paramètres

ptr
IntPtr

nativeint

Pointeur vers la fonction non managée à convertir.

Retours

TDelegate

Instance du type délégué spécifié.

Attributs

Exceptions

Le paramètre générique TDelegate n'est pas un délégué ou il s'agit d'un type générique ouvert.

Le paramètre ptr a la valeur null.

Remarques

Vous pouvez utiliser les méthodes et GetFunctionPointerForDelegate<TDelegate>(TDelegate) les GetDelegateForFunctionPointer<TDelegate>(IntPtr) méthodes pour marshaler les délégués dans les deux sens.

ptr est converti en délégué qui appelle la méthode non managée à l’aide de la convention d’appel __stdcall sur Windows ou de la convention d’appel __cdecl sur Linux et macOS. Vous pouvez définir la convention d’appel en appliquant le UnmanagedFunctionPointerAttribute délégué.

La GetDelegateForFunctionPointer<TDelegate>(IntPtr) méthode a les restrictions suivantes :

  • Les génériques ne sont pas pris en charge dans les scénarios d’interopérabilité.

  • Vous pouvez utiliser cette méthode uniquement pour les pointeurs de fonction non managés purs.

  • Vous ne pouvez pas utiliser cette méthode avec des pointeurs de fonction obtenus via C++.

S’applique à