解决Windows 2000/XP的蓝屏陷阱

发表于:2007-05-25来源:作者:点击数: 标签:
虽然基于NT架构的Windows 2000/ XP 系统稳定性已经大大增强,甚至Windows XP号称“从不死机”,但我们仍然会不时看到如图1所示的蓝色警报信息,这就是通常所说的“蓝屏”,究竟是怎么回事呢? 一、Windows 2000/XP爆发蓝色警报的原因 Windows 2000/XP采用了

    虽然基于NT架构的Windows 2000/XP系统稳定性已经大大增强,甚至Windows XP号称“从不死机”,但我们仍然会不时看到如图1所示的蓝色警报信息,这就是通常所说的“蓝屏”,究竟是怎么回事呢?  

  一、Windows 2000/XP爆发蓝色警报的原因

  Windows 2000/XP采用了分层结构,它的两个层又称模式,分别为用户模式(User Mode)和内核模式(Kernel Mode),应用程序是无法直接访问硬件设备的,只有借助驱动程序才能直接访问。  

  不过,即使NT架构再稳定,由于会由于某些原因,例如硬件冲突、硬件产生问题、注册表错误、虚拟内存不足、动态链接库文件丢失、资源耗尽等,此时可能会导致驱动程序或应用程序出现错误,严重时甚至会波及内核层。这种情况下,Windows会中止系统运行,并启动名为KeBugCheck的功能,通过检查所有中断的处理进程,并同预设的停止代码和参数比较后,屏幕将变为蓝色,并显示相应的错误信息和故障提示,由于出现这种现象时实际上就意味着死机,因此常称为“Blue Screen of Death”(BSOD),又称“STOP信息”或“停止信息”。

    二、认识蓝色警报中隐藏的信息

  Windows 2000/XP的BSOD窗口与Windows NT4以前的BOSD窗口有着很大的区别,最大的区别是NT的BSOD窗口仅包括一个通用的停止消息代码,但Windows 2000/XP的BSOD包含了停止消息和硬件消息两种类型,前者是发现一个无法恢复的软件错误时产生的错误信息,后者是发现一个严重的硬件错误时产生的错误信息。  

  虽然图1窗口中的信息看起来很复杂,但一般均由以下三部分组成:  

  1.错误信息

  在“*** Stop:”至“****** wdmaud.sys”之间的这段内容是所谓的错误信息,由出错代码、自定义参数、错误符号等三部分组成,各部分的含义如下:  

  出错代码:STOP后面的16进制数字;  

  自定义参数:出错代码字符的组成,由程序人员定义,一般用户很难理解;   

  错误符号:KMODE_EXCEPTION_NOT_HANDLED

  在错误符号后面,这里还显示了一个内存位置和文件名,可以了解到发生错误时的内存位置和源文件。对我们来说,其实最有用的还是前面的出错代码信息,在搜索微软知识库时将会用到。  

  2.推荐操作  

  这里显示了系统推荐用户采取的操作措施和步骤,例如在安全模式下卸载程序、回滚驱动程序、更新BIOS、安装补丁等,不过大部分情况下都需要重新启动系统后才能考虑进一步的操作。

    3.调试端口信息  

  这里会显示应该如何设置内核调试器的信息,包括内存转储映像是否已写入磁盘、使用什么端口来完成这次调试。  

  其实,根据笔者的经验,蓝色警报中除了出错代码比较有用外,对普通用户来说,其余的大部分信息并无多少实际意义,仅供参考而已。  

  为调试系统的需要,Windows在系统出现BSOP错误后,KeBugCheck会自动生成一个名为Memory.dmp的侦错文件,该文件位于C:WindowsMinidump文件夹下,默认设置下,该文件的大小与系统物理内存容量一致,我们可以将该文件压缩后发送给微软的技术支持部门,以获取相应的解决方案,但该文件的容量是如此巨大,如何发送是一个大问题,因此很少有用户真正这样做。

  提示:打开“系统属性→高级→启动和故障恢复”窗口,如图2所示,在这里可以看到“写入调试信息”的生成方式:小内存转储、核心内存转储、完全内存转储、无,基于上面的分析的原因,建议在这里选择“无”。  

 三、处理蓝色警报三部曲

  虽然Windows 2000/XP的蓝色警报窗口显示的信息可能各有不同,或者是硬件原因,或者是驱动程序与系统兼容性方面的问题,或者索性是应用程序的某些Bug。首先当然是排除病毒的原因,然后我们可以按照如下步骤进行处理:  

  第1步:重启系统

  出现蓝色警报窗口时,我们首先应该考虑的是重新启动系统,大部分情况下重启系统后即可解决问题。不过,一般此时已无法通过“Ctrl+Alt+Del”热启动,而只能按下复位按钮冷启动,或者索性断电后重新开机。   

  进入系统时,从“控制面板→管理工具→事件查看器”,或者在“开始→运行”框中键入“eventvwr.msc”命令进入事件查看器界面,如图3所示,在这里根据日期和时间重点检查“系统”和“应用程序”中的类型标志为“错误”的事件,例如图4报告某个服务启动失败的错误。   

 第2步:恢复至最后一次正确的配置 

  Windows 2000/XP出现蓝色警报并不是无缘无故而来,NT架构的操作系统也不会乱发脾气,一般都是由于更新了设备驱动程序或者安装了某些软件而造成,有时甚至是用户自行优化系统或删除了某些重要的系统文件所导致,此时可以重启系统,并快速按下F8键,选择“最后一次正确配置”,这样会恢复注册表中HKEY_LOCAL_MACHINESystemCurrentControlSet项的有效注册表信息,但无法解决驱动程序或文件损坏而导致的错误。  

  或者,你也可以尝试按下F8键选择启动至安全模式,如果能够正常进入安全模式,那么说明可能是驱动程序或系统服务的问题。  

  第3步:查询出错代码

  记下图1窗口中的英文信息,特别是“0x0000001E”这段出错代码,然后从另外一台计算机上访问http://support.microsoft.com站点,在左上角的“搜索(知识库)”框中键入“stop ***”,这里的“***”表示出错代码,为阅读的便利,一般当然是选择“中文知识库”,不过很多时候我们恐怕只能在“英文知识库”才能找到答案,或者也可以在Google或百度上进行搜索。  

  如果以上几招还是无法解决问题,也许我们应该考虑是否属于硬件方面的问题,Windows XP可以访问http://support.microsoft.com/default.aspx?scid=kb;zh-cn;314062查看硬件兼容列表(HCL),Windows 2000用户可以访问http://winqual.microsoft.com/download/display.asp?FileName=hcl/Win2000HCL.txt查看硬件兼容列表,然后可以考虑重新插拔内存、显卡、网卡,或者用替换法尝试逐个更换,比较常见的是内存问题或电源问题,如果这一招还不行的话,恐怕就只能考虑重新安装系统或格式化硬盘了。

 

 

原文转自:http://www.ltesting.net