Marshal.GetDelegateForFunctionPointer Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.
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++.