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
| Nama | Deskripsi |
|---|---|
| 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
- 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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the delegate might not be available. Use the GetDelegateForFunctionPointer<TDelegate> overload instead.")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the delegate might not be available. Use the GetDelegateForFunctionPointer<TDelegate> overload instead.")>]
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 umum.
Keterangan
Anda dapat menggunakan GetDelegateForFunctionPointer metode dan GetFunctionPointerForDelegate untuk mendelegasikan marshal 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 parameter marshaler juga dapat marshal penunjuk fungsi untuk mendelegasikan.
ptr dikonversi ke delegasi yang memanggil metode yang tidak dikelola 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
- 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 yang tidak dikelola 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 mendelegasikan marshal di kedua arah.
ptr dikonversi ke delegasi yang memanggil metode yang tidak dikelola 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++.