Marshal.GetDelegateForFunctionPointer 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
GetDelegateForFunctionPointer(IntPtr, Type) |
已过时.
将非托管函数指针转换为委托。 |
GetDelegateForFunctionPointer<TDelegate>(IntPtr) |
将非托管函数指针转换为指定类型的委托。 |
GetDelegateForFunctionPointer(IntPtr, Type)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
注意
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
将非托管函数指针转换为委托。
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
参数
- ptr
-
IntPtr
nativeint
要转换的非托管函数指针。
- t
- Type
要返回的委托的类型。
返回
可转换为适当的委托类型的委托实例。
- 属性
例外
t
参数不是委托或泛型。
注解
可以使用 GetDelegateForFunctionPointer 和 GetFunctionPointerForDelegate 方法在两个方向封送委托。 使用 GetDelegateForFunctionPointer时, ptr
将作为 System.IntPtr导入。
System.IntPtr可以通过调用 GetFunctionPointerForDelegate 来获取托管委托的 并将其作为参数传递;然后可以从非托管方法内部调用它。 请注意,参数封送处理器还可以封送指向 .NET Framework 2.0 及更高版本中委托的函数指针。
ptr
转换为使用 默认平台调用约定调用非托管方法的委托。 可以通过将 应用于 UnmanagedFunctionPointerAttribute 委托来设置调用约定。
方法 GetDelegateForFunctionPointer 具有以下限制:
互操作方案中不支持泛型。
只能将此方法用于纯非托管函数指针。
不能将此方法用于通过 C++ 获取的函数指针。
适用于
GetDelegateForFunctionPointer<TDelegate>(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
将非托管函数指针转换为指定类型的委托。
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
类型参数
- TDelegate
要返回的委托的类型。
参数
- ptr
-
IntPtr
nativeint
要转换的非托管函数指针。
返回
指定委托类型的实例。
- 属性
例外
TDelegate
泛型参数不是代理,或者它是开放式泛型类型。
ptr
参数为 null
。
注解
可以使用 GetDelegateForFunctionPointer<TDelegate>(IntPtr) 和 GetFunctionPointerForDelegate<TDelegate>(TDelegate) 方法在两个方向封送委托。
ptr
转换为使用 默认平台调用约定调用非托管方法的委托。 可以通过将 应用于 UnmanagedFunctionPointerAttribute 委托来设置调用约定。
方法 GetDelegateForFunctionPointer<TDelegate>(IntPtr) 具有以下限制:
互操作方案中不支持泛型。
只能将此方法用于纯非托管函数指针。
不能将此方法用于通过 C++ 获取的函数指针。