Bagikan melalui


Marshal.GetDelegateForFunctionPointer Metode

Definisi

Overload

GetDelegateForFunctionPointer(IntPtr, Type)
Kedaluwarsa.

Mengonversi penunjuk fungsi yang tidak dikelola ke delegasi.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Mengonversi penunjuk fungsi yang tidak dikelola ke delegasi dari jenis tertentu.

GetDelegateForFunctionPointer(IntPtr, Type)

Sumber:
Marshal.cs
Sumber:
Marshal.cs
Sumber:
Marshal.cs

Perhatian

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

Mengonversi penunjuk fungsi yang tidak dikelola ke delegasi.

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

Penunjuk fungsi tidak terkelola yang akan dikonversi.

t
Type

Jenis delegasi yang akan dikembalikan.

Mengembalikan

Instans delegasi yang dapat ditransmisikan ke jenis delegasi yang sesuai.

Atribut

Pengecualian

Parameter t bukan delegasi atau generik.

Parameternya ptr adalah null.

-atau-

Parameternya t adalah null.

Keterangan

Anda dapat menggunakan GetDelegateForFunctionPointer metode dan GetFunctionPointerForDelegate untuk marshal delegasi di kedua arah. Dengan GetDelegateForFunctionPointer, ptr diimpor sebagai System.IntPtr. System.IntPtr dapat diperoleh untuk delegasi terkelola dengan memanggil GetFunctionPointerForDelegate dan diteruskan sebagai parameter; kemudian dapat dipanggil dari dalam metode yang tidak dikelola. Perhatikan bahwa marshaler parameter juga dapat marshal penunjuk fungsi untuk mendelegasikan di versi .NET Framework 2.0 dan yang lebih baru.

ptr dikonversi ke delegasi yang memanggil metode tidak terkelola menggunakan konvensi panggilan platform default. Anda dapat mengatur konvensi panggilan dengan menerapkannya UnmanagedFunctionPointerAttribute ke delegasi.

Metode GetDelegateForFunctionPointer ini memiliki batasan berikut:

  • Generik tidak didukung dalam skenario interop.

  • Anda hanya dapat menggunakan metode ini untuk penunjuk fungsi murni yang tidak dikelola.

  • Anda tidak dapat menggunakan metode ini dengan pointer fungsi yang diperoleh melalui C++.

Berlaku untuk

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Sumber:
Marshal.cs
Sumber:
Marshal.cs
Sumber:
Marshal.cs

Mengonversi penunjuk fungsi yang tidak dikelola ke delegasi dari jenis tertentu.

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

Jenis parameter

TDelegate

Jenis delegasi yang akan dikembalikan.

Parameter

ptr
IntPtr

nativeint

Penunjuk fungsi tidak terkelola untuk dikonversi.

Mengembalikan

TDelegate

Instans jenis delegasi yang ditentukan.

Atribut

Pengecualian

Parameter TDelegate generik bukan delegasi, atau merupakan jenis generik terbuka.

Parameternya ptr adalah null.

Keterangan

Anda dapat menggunakan GetDelegateForFunctionPointer<TDelegate>(IntPtr) metode dan GetFunctionPointerForDelegate<TDelegate>(TDelegate) untuk marshal delegasi di kedua arah.

ptr dikonversi ke delegasi yang memanggil metode tidak terkelola menggunakan konvensi panggilan platform default. Anda dapat mengatur konvensi panggilan dengan menerapkannya UnmanagedFunctionPointerAttribute ke delegasi.

Metode GetDelegateForFunctionPointer<TDelegate>(IntPtr) ini memiliki batasan berikut:

  • Generik tidak didukung dalam skenario interop.

  • Anda hanya dapat menggunakan metode ini untuk penunjuk fungsi murni yang tidak dikelola.

  • Anda tidak dapat menggunakan metode ini dengan pointer fungsi yang diperoleh melalui C++.

Berlaku untuk