包装委托和非托管函数指针
.NET Framework 2.0 版和更高版本提供了使用下列方法在托管和非托管代码之间对函数指针进行封送处理的能力:
使用 Marshal.GetDelegateForFunctionPointer 方法可将非托管函数指针封送处理为委托。 此方法使用 System.IntPtr 类表示非托管函数指针。
使用 Marshal.GetFunctionPointerForDelegate 方法可将委托封送处理为可从非托管代码调用的函数指针。 使用此方法时,必须手动避免该委托被垃圾回收器回收。 垃圾回收器不跟踪对非托管代码的引用。
注意,在 .NET Framework 2.0 和更高版本中,参数封送拆收器还可将函数指针封送为委托。