8 《Undocumented Windows 2000 Secrets》翻译 --- 第四章( 四 )


深入 Windows 2000 内存
引入用户模式和内核模式的独立 4GB 地址空间被再次划分为多个更小的块 。正如你可能猜到的,它们中的大多数都包含未文档化的结构,而且服务于未文档化的地目的 。其中某些东西对于任何开发系统诊断或调试软件的人来说都是真正的金矿 。
基本的操作系统信息
如果你注意过 示列 4-1 下半部分的帮助信息,你会发该节的标题是:“系统状态选项” 。现在试试名为“显示操作系统信息”的选项:o。示列 4-12 给出了在我的机器上使用该选项的输出结果 。这里显示的信息都是 SPY_OS_INFO 结构的内容,该结构定义与 列表 4-13,由 Spy 设备函数 SpyOutputOsInfo() 实际创建该结构,此函数也包含在 列表 4-13 中 。在 示列 4-12 中,你可以看到位于 4GB 地址空间中的进程的一些典型地址 。例如,有效的用户地址范围是: 0x00010000 ---- 0x7FFFFFFF。你可能阅读过其他有关 Windows NT 或 2000 的程序设计书籍,用户模式的第一个和最后一个 64KB 线性内存区域是“不能访问区域”,访问这一区域将引发一个错误(参见第五章,Solomon 1998 ),W2k_mem.exe 输出证明了这一点 。
示列 4-12. 显示操作系统信息
示列 4-12 中的最后三行包含的信息非常有趣,它们都是有关系统的 。这些信息大部分都取自位于地址 0xFFDF0000 处的 SharedUserData 区域中 。系统在该处维护一个名为 KUSER_SHARED_DATA 的结构,该结构定义于 DDK 头文件 ntddk.h。

推荐阅读