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 -> Delegatestatic member GetDelegateForFunctionPointer : nativeint * Type -> Delegate[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint * Type -> DelegatePublic 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 -> 'Delegatestatic member GetDelegateForFunctionPointer : nativeint -> 'DelegatePublic 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++ 获取的函数指针。