我希望这不是一个愚蠢的问题,如果是的话,那么我至少想把它解决掉,这样我将来就不会觉得自己那么愚蠢。
现在,我们使用 Windbg 加载 Windows 崩溃转储。以下是调试器输出的前几行:
0: kd> .dumpdebug
----- 64 bit Kernel Summary Dump Analysis
DUMP_HEADER64:
MajorVersion 0000000f
MinorVersion 00001db1
...
我基本理解了 MinorVersion。它是十六进制的,转换为十进制就是 7601。Windows 管理员已经能够从中判断出这一定是 Win7 x64 计算机或带有 SP1 的 2k8 R2 计算机。但 7601 不是内部版本号吗?它应该是 Major.Minor.Build/Revision... 对吧?
另外我不明白MajorVersion。它应该是6。这个Windows版本是6。但是十六进制的0000000f不是十进制的15吗?
例如,当您启动命令提示符时,此版本的 Windows 的完整版本字符串是 6.1.7601。如果 7601 是次要版本,那么 1 是什么,6 是什么?为什么崩溃转储显示 0F?
答案1
部分答案:
确实MinorVersion
是指版本号,如果您愿意滥用较旧的机器/操作系统,您可以通过将(例如)某些 XP 和 2003 盒子的版本号与 中的 进行匹配来跨平台MinorVersion
验证dump_header
。
您可能还会注意到(或者至少我注意到了),尽管内核版本不同,但MajorVersion
这些转储调试文件中的 也是0000000f
。因此,它显然不是指内核版本……或者至少不正确。至于它指的是什么……好吧,这绝对不是一个愚蠢的问题,尽管我还没有答案。目前还没有。
更新:
发现了一些非常恼人的事情。
在 Windows 2000 和 Windows NT 4 中,MajorVersion
转储调试文件中的 是free system
。这个字段的含义似乎没有记录,尽管free system
我在 Microsoft 看到的所有示例转储中都显示了它的含义,例如NT工作站资源包, 和甚至关于如何使用的知识库dumpchk.exe
适用于2008和Windows 7系统。
看起来好像它毫无意义,或者是一个错误?至少这次0xB16B00B5
不是。0x0B00B135