Freigeben über


Marshal.GetDelegateForFunctionPointer Methode

Definition

Überlädt

GetDelegateForFunctionPointer(IntPtr, Type)
Veraltet.

Konvertiert einen nicht verwalteten Funktionszeiger in einen Delegaten.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Konvertiert einen nicht verwalteten Funktionszeiger in einen Delegaten eines angegebenen Typs.

GetDelegateForFunctionPointer(IntPtr, Type)

Quelle:
Marshal.cs
Quelle:
Marshal.cs
Quelle:
Marshal.cs

Achtung

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

Konvertiert einen nicht verwalteten Funktionszeiger in einen Delegaten.

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

Parameter

ptr
IntPtr

nativeint

Der nicht verwaltete Funktionszeiger, der konvertiert werden soll.

t
Type

Der Typ des zurückzugebenden Delegaten.

Gibt zurück

Eine Delegatinstanz, die in den entsprechenden Delegattyp umgewandelt werden kann.

Attribute

Ausnahmen

Der t-Parameter ist weder ein Delegat, noch ist er generisch.

Der ptr-Parameter ist null.

- oder -

Der t-Parameter ist null.

Hinweise

Sie können die GetDelegateForFunctionPointer Methoden und GetFunctionPointerForDelegate verwenden, um Delegaten in beide Richtungen zu marshallen. Mit GetDelegateForFunctionPointerwird ptr als System.IntPtrimportiert. Ein System.IntPtr kann für einen verwalteten Delegaten abgerufen werden, indem aufgerufen GetFunctionPointerForDelegate und als Parameter übergeben wird. Er kann dann innerhalb der nicht verwalteten Methode aufgerufen werden. Beachten Sie, dass der Parameter marshaler auch Funktionszeiger auf Delegaten in .NET Framework 2.0 und höheren Versionen marshallen kann.

ptr wird in einen Delegaten konvertiert, der die nicht verwaltete Methode mithilfe der Standardkonvention für Plattformaufrufe aufruft. Sie können die Aufrufkonvention festlegen, indem Sie die auf UnmanagedFunctionPointerAttribute den Delegaten anwenden.

Für GetDelegateForFunctionPointer die -Methode gelten die folgenden Einschränkungen:

  • Generics werden in Interop-Szenarien nicht unterstützt.

  • Sie können diese Methode nur für reine nicht verwaltete Funktionszeiger verwenden.

  • Sie können diese Methode nicht mit Funktionszeigern verwenden, die über C++ abgerufen werden.

Gilt für:

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Quelle:
Marshal.cs
Quelle:
Marshal.cs
Quelle:
Marshal.cs

Konvertiert einen nicht verwalteten Funktionszeiger in einen Delegaten eines angegebenen Typs.

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

Typparameter

TDelegate

Der Typ des zurückzugebenden Delegaten.

Parameter

ptr
IntPtr

nativeint

Der nicht verwaltete Funktionszeiger, der konvertiert werden soll.

Gibt zurück

TDelegate

Eine Instanz vom angegebenen Delegaten.

Attribute

Ausnahmen

Der TDelegate generische Parameter ist kein Delegat, oder es ist ein offener generischer Typ.

Der ptr-Parameter ist null.

Hinweise

Sie können die GetDelegateForFunctionPointer<TDelegate>(IntPtr) Methoden und GetFunctionPointerForDelegate<TDelegate>(TDelegate) verwenden, um Delegaten in beide Richtungen zu marshallen.

ptr wird in einen Delegaten konvertiert, der die nicht verwaltete Methode mithilfe der Standardkonvention für Plattformaufrufe aufruft. Sie können die Aufrufkonvention festlegen, indem Sie die auf UnmanagedFunctionPointerAttribute den Delegaten anwenden.

Für GetDelegateForFunctionPointer<TDelegate>(IntPtr) die -Methode gelten die folgenden Einschränkungen:

  • Generics werden in Interop-Szenarien nicht unterstützt.

  • Sie können diese Methode nur für reine nicht verwaltete Funktionszeiger verwenden.

  • Sie können diese Methode nicht mit Funktionszeigern verwenden, die über C++ abgerufen werden.

Gilt für: