ReactOS – ntdll.dll 存根在哪里?

ReactOS – Where are the ntdll.dll stubs?

我刚刚在 github 上搜索 ReactOS 源代码,但在 ntdll.h 中找不到系统调用存根。这是如何实施的?我可以看到 SharedUserData->SystemCall 被设置为 KiIntSystemCall / KiFastSystemCall 但我无法追踪它的任何使用或调用存根的实际位置。我期待在构建 ntdll 时组装和链接的 asm 文件中看到它们的大列表。

如果你仔细观察 ReactOS 的 ntdll 的 CMakeFiles.txt,你会注意到它链接到一个名为 "ntdllsys" 的静态库。 Grepping 代码显示此 "ntdllsys" 库的构建规则定义在 ReactOS 的 ntoskrnl CMakeFiles.txt 文件中。 进一步看,这个库的唯一源文件是一个名为 "ntdll.S" 的预处理程序集文件 它包括执行魔法的帮助程序头文件("syscalls.inc" 用于特定于平台的程序集帮助程序,"sysfuncs.h" 用于系统调用列表)。 这个想法是自动生成实际的存根。