bluescreen 好吧- -终于又出炉了一篇。。。将就着看吧- -如果觉得中文版惨目忍睹的那就请看英文原版吧。翻译不好的部分都提供英文原版了

原版地址:http://msdn.microsoft.com/en-us/library/windows/hardware/ff538869(v=vs.85).aspx

翻译:raintrue

翻译网址:www.lfzh.org

本文只是对微软蓝屏信息的简单翻译,并不代表微软立场,同时对因本文照成的损失不负任何责任。同时转载请注明出处,请勿删除本段信息。

当微软Windows系统遇到一个问题诸如危及系统安全运行,系统中断。这种情况被称为错误反馈。它也通常被称为系统崩溃,内核错误,或停止错误。

如果系统上启用了崩溃转储,崩溃转储文件将被创建。

如果没有附加调试器,一个蓝色的屏幕以文本错误信息的形式出现。这个屏幕被称为蓝屏,错误反馈画面,或停止屏幕。
蓝屏的具体内容取决于错误的原因。以下是一个可能导致蓝屏的例子:

STOP: 0x00000079 (0x00000002, 0x00000001, 0x00000002, 0x00000000)

Mismatched kernel and hal image.
不匹配的内核和hal镜像

Beginning dump of physical memory
开始转存物理内存
Physical memory dump complete. Contact your system administrator or
technical support group.
物理内存转储完成。请与您的系统管理员或技术支持小组联系。

另一方面,有些蓝屏看起来像这样:

STOP: c000021a {致命系统错误}

The Windows Logon Process system process terminated unexpectedly with
Windows登录时系统进程意外终止
地址: 0x00000001 (0x00000000 0x00000000).
The system has been shut down.
系统已关闭

stop以及紧接着的16进制数字被称为错误代码或者停止代码,这是屏幕上最重要的信息。
每个错误校验码有四个相关参数。在第一种情况的蓝屏出现时,错误校验码之后会显示所有的四个参数。
然而,第二种情况的蓝屏,这些参数已经被重新整理在说明文本里。
无论重排的量,他们总会出现顺序。如果少于四个参数,其余的参数可以被假定为零。

蓝屏上其他文字提供了额外的信息。对于一些错误反馈,这可能是对所发生问题的一种解释或使你如何处理这个问题的建议。如果一个内核模式转储文件已经写出,这通常会标出。

在某些情况下,windows将只显示蓝屏第一行,这可能是因为用于显示的重要服务已受到错误的影响。
Bug Check Symbolic Names
错检符号名:

每个错误校验码也有一个相关联的符号名。These names usually do not appear on the blue screen. In these examples, the first screen shows bug check 0x79 (MISMATCHED_HAL), while the second shows bug check 0xC000021A (STATUS_SYSTEM_PROCESS_TERMINATED).
这些内容通常不会出现在蓝屏中。在这些例子中,第一类蓝屏显示错误反馈0x79(mismatched_hal不匹配的Hardware Abstraction Layer),而第二类显示错误反馈0xC000021A (STATUS_SYSTEM_PROCESS_TERMINATED系统进程终止状态)

要从内核模式驱动程序中故意造成这个错误反馈,你需要将错误反馈的符号名传递到KeBugCheck或KeBugCheckEx函数。(you need to pass the bug check's symbolic name to the KeBugCheck or KeBugCheckEx function.)

这必须是只有在没有其他选择的情况下。对于这些功能的更多详细信息,请参阅Windows驱动程序工具包

从调试器读取错误反馈信息

如果(当前系统)附加调试器,错误反馈会导致计算机启动调试器。
在这种情况下,蓝屏可能不会出现,或者可能会出现更少的信息;而且本次错误产生的全部信息将会发送到调试器,并显示在调试器窗口。想要再次看到这些信息,使用故障检测(显示错误反馈数据)命令。
关于当前的问题,调试器将显示更多的信息。想要再次看到这些信息,可以使用!analyze扩展命令。
Tips for Software Engineers
给软件工程师的提示
当你的代码出现错误反馈时,你应该使用内核调试器来分析这个问题,然后在你的代码中修正错误。如需完整的详细信息,请参阅单独的错误反馈代码中的Bug校验码参考部分。

然而,也可能您遇到的报错信息不是由您自己的代码导致的。在这种情况下,您可能无法找到问题的真正原因。那么您的目标应该是解决问题,如果可能,分析和删除硬件或软件的组件直到找出错误。

许多问题是可以通过基本的故障排除程序来解决的,如验证指令,重新安装关键组件,验证文件的日期。此外,诊断工具如网络WINMSD通用嗅探器和Microsoft Windows资源工具包可能帮助分析和解决这些问题。

对于一般Windows错误反馈码的故障排除,遵循以下建议:
如果您的系统最近新增硬件,尝试移除或者更换。或者查找制造商是否提供任何补丁。

*你可以尝试运行系统制造商提供的硬件诊断程序。检查制造商是否有系统BIOS或固件可用。

*确保所有扩展板正确就位,所有的线路完全连接。

*确认任何新的硬件的安装与Windows安装的版本兼容。例如:你可以在WIN7兼容中心获取WIN7相关的兼容信息。

*如果近期增加了新的设备驱动程序或系统服务,尝试移除(旧的)和更新他们。

注意 使用安全模式删除或者禁用组件时。在windows的启动过程中使用安全模式仅加载系统所需的最少驱动程序和系统服务。要进入安全模式,先重启您的计算机,在操作系统的字符模式选择菜单中按F8,在产生的高级选项菜单中选择安全模式。

运行杀毒软件。病毒可以感染所有类型的用于windows格式化的硬盘,并导致磁盘生成系统错误反馈代码的部分损坏。确保杀毒软件检查主引导记录是否感染。

验证系统已安装最新的服务包。检测服务包,如果有的话,在系统上安装,请单击“开始”,单击“运行”,键入winver,然后按ENTER键。关于Windows对话框显示Windows版本号和服务包的版本号,如果已安装。
Disable BIOS memory options such as caching or shadowing.
禁用的BIOS内存选项,如缓存或映像。
Check the System Log and Application Log in Event Viewer to see if any additional error messages have been logged recently. These might pinpoint the cause of the error.
检查事件查看器中的系统日志和应用程序日志。查找最近被增加的错误信息,这些可能会找出错误的原因。
Kernel debugging is especially useful when other troubleshooting techniques fail, or for a recurring problem. Remember to capture the exact text in the bug check information section of the error message. To isolate a complex problem and develop a viable workaround or a program replacement, you must record the exact actions that lead to the failure.
对于其他故障排除技术失败或者面对经常发生的问题时内核调试是特别有用的。记得要捕获错误消息的错误反馈信息段的具体文本。要隔离出复杂的问题,并定制一个可行的方案或写出一个替换程序,你必须记录导致错误的准确原因。

Code Name
0x00000001 APC_INDEX_MISMATCH

 

小林子打字好辛苦,麻烦转载注明: 转载自林枫紫涵

本文链接地址: http://www.lfzh.org/blue-screen-data.html

作者: admin