Marshal.GetDelegateForFunctionPointer Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
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 .NET Framework 2.0 dan versi 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
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++.