在用户态下调用Native API的作用的本文不再赘述。 在用户态下调用Native API的方法也不止一种,本文介绍了我个人认为在用户态下调用Native API的一种最简便的方法。其余几种方法可以参考我的另外一篇文章《
用户态应用程序调用Native API的方法》。
本文以调用NtQuerySystemInformation为例介绍这种方法:
第一步:声明函数原型
extern "C" DWORD __stdcall NtQuerySystemInformation(DWORD, PDWORD, DWORD, PVOID);
第二步:添加lib库文件
将DDK中相应平台下的ntdll.lib复制到项目当前目录下,并把ntdll.lib添加到项目的链接文件列表中。
只需这简单的两步,你就可以直接调用ntdll.lib中导出的所有Native API了。
需要注意的是ntdll.lib中导出的Native API绝大部分都是以Nt开头的,而不是以Zw开头的。如不知该Native API的原型,可参考Windows NT(2000) Native API Reference。
本文以调用NtQuerySystemInformation为例介绍这种方法:
第一步:声明函数原型
extern "C" DWORD __stdcall NtQuerySystemInformation(DWORD, PDWORD, DWORD, PVOID);
第二步:添加lib库文件
将DDK中相应平台下的ntdll.lib复制到项目当前目录下,并把ntdll.lib添加到项目的链接文件列表中。
只需这简单的两步,你就可以直接调用ntdll.lib中导出的所有Native API了。
需要注意的是ntdll.lib中导出的Native API绝大部分都是以Nt开头的,而不是以Zw开头的。如不知该Native API的原型,可参考Windows NT(2000) Native API Reference。