问题描述
Process Explorer
(又名procexp
)要求使用调试符号来显示内核内存限制,并提供一个提供读取它们的API的库。正如我发现的那样,仅需要当前运行的内核(ntoskrln*
)的符号,并从中读取变量MmSizeOfPagedPoolInBytes
和MmSizeOfNonPagedPoolInBytes
。可以直接从内核获取它们。
那么为什么需要调试符号呢?它们是否包含一些无法从操作系统本身获得的信息?
解决方法
因为Process Explorer需要知道这些变量在内核内存中的位置,并且每个版本的Windows都可能不同,所以符号是获取此位置的正确方法。微软发布公共符号。
并非所有内核信息都可以从用户空间轻松访问。