本书Windows NT/2000 Native API Reference提供了未记录(由Microsoft)Native API的全面文档(即使已过时)。但我很好奇,无论如何找到ntdll.dll中声明的低级函数和kernel32.dll,advapi.dll等中的用户模式函数之间的映射。
例如:
我知道函数CreateFile
映射到NtCreateFile
。但是我没有ntdll.dll中针对kernel32.dll中的MoveFileWithProgressW
函数的确切函数
答案 0 :(得分:3)
与标准Windows(用户模式)API相比,NT本机API是一种较低级别的API。因此在许多情况下没有一对一的通信。我猜测MoveFileWithProgress
是使用较低级别的开放/读/写/关闭例程在用户空间中实现的。
换句话说,如果你想使用Native API,你需要重新实现一堆便利功能,如MoveFileWithProgress
。
Wine项目重新实现了Windows API。您可以看到their implementation来了解它是如何完成的。 (在页面中搜索“MoveFileWithProgress”)
答案 1 :(得分:3)
您可以使用Windows SDK / Visual Studio中的dumpbin.exe
实用程序从用户模式系统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)
等