摘要:
前面讲述了两种采用平台调用的技术,分别是动态平台调用 part 1,动态平台调用 part 2
上面两篇文章介绍了两种不同的进行动态平台调用的方法。这两种方法也是在.NET Framework 1.0和1.1下进行动态平台调用的主要方法。从.NET Framework 2.0起,引入了一个能够用于进行动态平台调用的新技术,那就是Marshal.GetDelegateForFunctionPointer。使用这种方法动态加载非托管DLL并调用其中的非托管函数,其主要步骤如下:
(1) 为非托管函数定义一个委托;
(2) 使用Win32 API函数LoadLibrary加载需要调用的非托管DLL;
(3) 使用Win32 API函数GetProcAddress获得非托管函数的地址;
(4) 使用Marshal.GetDelegateForFunctionPointer将上面获得的函数地址封送到第一步定义的委托;
(5) 使用代理调用函数,获得结果;
(6) 使用Win32 API函数FreeLibr 阅读全文