1

Windows NT/2000 Native API Reference 》一书提供了未记录的(由 Microsoft 提供的)Native API 的综合文档(即使已过时)。但我很好奇,有没有找到在 ntdll.dll 中声明的低级函数与 kernel32.dll、advapi.dll 等中的用户模式函数之间的映射。

例如:

我知道函数CreateFile映射到NtCreateFile. MoveFileWithProgressW但是对于kernel32.dll中的函数,我不知道 ntdll.dll 中的确切函数

4

2 回答 2

3

与标准 Windows(用户模式)API 相比,NT 本机 API 是较低级别的 API。所以很多情况下没有一一对应的关系。我猜这MoveFileWithProgress是使用较低级别的打开/读取/写入/关闭例程在用户空间中实现的。

换句话说,如果你想使用 Native API,你需要重新实现一堆方便的函数,比如MoveFileWithProgress.

Wine 项目重新实现了 Windows API。您可以查看他们的实现以了解它是如何完成的。(在页面中搜索“MoveFileWithProgress”)

于 2012-10-25T21:20:44.553 回答
3

dumpbin.exe您可以使用Windows SDK/Visual Studio 中的实用程序从用户模式系统 DLL 转储导出并查找转发函数:

dumpbin -exports kernel32.dll | find/I "forwarded" > fwd.txt

这将创建fwd.txt包含转发函数列表的文件,如下所示:

151   96  EnterCriticalSection (forwarded to NTDLL.RtlEnterCriticalSection)
361  168  GetLastError (forwarded to NTDLL.RtlGetLastWin32Error)
518  205  HeapAlloc (forwarded to NTDLL.RtlAllocateHeap)
524  20B  HeapFree (forwarded to NTDLL.RtlFreeHeap)
528  20F  HeapReAlloc (forwarded to NTDLL.RtlReAllocateHeap)
530  211  HeapSize (forwarded to NTDLL.RtlSizeHeap)

等等

于 2012-10-25T21:21:14.973 回答