为什么 Process Explorer 需要调试符号来显示内核内存限制?

Why does Process Explorer require debug symbols to show kernel memory limits?

Process Explorer(又名 procexp)需要调试符号来显示内核内存限制和提供 API 的库来读取它们。正如我所发现的,当前 运行 内核 (ntoskrln*) 的符号是必需的,变量 MmSizeOfPagedPoolInBytesMmSizeOfNonPagedPoolInBytes 是从中读取的。可以直接从内核获取。
那么为什么需要调试符号呢?它们是否包含一些无法从 OS 本身获得的信息?

因为 Process Explorer 需要知道这些变量在内核内存中的位置,并且它在 windows 的每个版本之间可能不同,所以符号是获取此位置的正确方法。 Microsoft 发布 public 个符号。

并非所有内核信息都可以从用户 space 轻松访问。