主题1: | 什么是蓝屏错误? |
存在以下情况时,将会出现蓝屏错误:
- Windows检测到一个无法在不丢失数据的情况下恢复的错误
- Windows检测到关键的操作系统数据已损坏
- Windows检测到硬件出现不可恢复的故障
- 这些年来,显示的确切文本已发生变化:Windows NT 4.0中显示密密麻麻的信息,而Windows现代版本中采用的信息相对较少。(图1)
对计算机造成损坏。
UNMOUNTABLE_BOOT_VOLUME
如果是第一次看见此错误屏幕,
请重新启动计算机。如果此屏幕再次出现,则请执行
以下步骤:
检查以确保拥有足够的磁盘空间。如果
Stop信息中已确定驱动程序,则请禁用此驱动程序,或咨询
制造商以确定此驱动程序是否已更新。尝试更换视频
适配器。
咨询硬件供应商以确定所有BIOS是否已更新。禁用
BIOS内存选项,如高速缓存或屏蔽。
如果需要使用安全模式删除或禁用组件,则请重新启动
计算机,并按F8以选择“Advanced Startup Options(高级启动选项)”,然后
选择“Safe Mode(安全模式)”。
技术信息:
*** STOP: 0x000000ED(0x80F128D0, 0xC000009C, 0x00000000, 0x00000000)
主题2: | 诊断出现常见蓝屏错误消息的问题 |
Stop 0x000000ED(UNMOUNTABLE_BOOT_VOLUME)
导致这两个错误的原因相同,并且相同的故障诊断步骤对两者都适用。这些Stop代码通常会在启动过程中出现。当您遇到其中一个Stop代码时,将会出现以下情况:
1 系统已完成开机自检(POST)。
2 系统已加载NTLDR,并将启动过程的控制权移交给NTOSKRNL(内核)。
3 NTOSKRNL被混淆。它无法找到剩下的部分,也无法在认为被存储的位置读取文件系统。
诊断此错误时,您的任务就是确定导致Windows内核混淆的原因,并解决此混淆问题。
检查事项:
- 系统BIOS中的SATA控制器配置如果SATA控制器已从ATA模式切换到AHCI模式(或从AHCI模式切换到ATA模式),由于不同的模式需要不同的驱动程序,因此Windows将无法与SATA控制器进行通信。尝试切换BIOS中的SATA控制器模式。
- RAID设置如果您一直在尝试进行RAID控制器设置,则可能会收到此错误。尝试将RAID设置恢复为自动检测(通常十分准确)。
- 电缆拔插不当或错误尝试重新拔插连接驱动器及其控制器的数据线两端。
- 硬盘出现故障在硬盘中运行内置诊断程序。请记住:代码7指示的是可更正的数据损坏,而非磁盘故障。
- 文件系统损坏从Windows安装光盘启动恢复控制台,并运行chkdsk/f/r。
- 未正确配置的BOOT.INI(Windows XP)。如果不小心清除或修补了boot.ini文件,则您可能会在启动过程中收到Stop代码0x7B。从Windows安装光盘启动恢复控制台,并运行BOOTCFG/REBUILD
STOP 0x00000024(NTFS_FILE_SYSTEM)
此Stop代码表示NTFS文件系统驱动程序遇到无法处理的问题,此问题几乎都是由以下三个因素引起:
- 磁盘上的数据损坏
- 内存中的数据损坏
- 系统内存用竭(此情况通常只会在过载的服务器上出现)
检查事项:
1 重新拔插内存和所有驱动程序数据线,以避免出现因硬件安装不当或错误而造成的数据损坏问题。
2 运行内存和硬盘全面诊断程序。无法在此进行彻底的快速测试。您需要运行全面系统诊断程序。
3 如果这些诊断程序均已通过,则请从“Recovery Console(恢复控制台)”(chkdsk/f/r)运行全面系统检查,以检测并(可能)修复所有损坏的数据。
4 如果以上措施均无法解决此问题,则请重新安装Windows。
5 如果重新安装Windows也无法解决此问题,请更换硬盘。
STOP 0x0000007E(SYSTEM_THREAD_EXEPTION_NOT_HANDLED)
STOP 0x0000008E(KERNEL_MODE_EXCEPTION_NOT_HANDLED)
这两个错误表示内核中运行的程序遇到了无法恢复的意外情况。它们具有相同的故障诊断和解决步骤。您可能需要使用Windows调试程序找出导致此错误的原因。
检查事项:
- 如果蓝屏信息中提到了某驱动程序或库文件,则请找出此文件隶属的驱动程序或应用程序,然后更新或禁用它。
- 将系统BIOS更新为可用的最新版本。
- 卸载所有最近安装的程序,并回滚所有最近安装的驱动程序。
- 对计算机内存运行诊断程序。
STOP 0x00000050(PAGE_FAULT_IN_NON_PAGED_AREA)
此Stop代码表示系统几乎总是出于以下原因尝试访问不存在的内存:
- 驱动程序尝试访问一页不存在的内存
- 系统服务(如 病毒扫描仪)出现意外情况
- 故障或未正确安装内存
- 硬盘上的数据损坏
使用Windows调试程序查明导致这些错误的确切原因。
检查事项:
1 如果蓝屏错误中提到了某驱动程序或库文件,则请找出此文件隶属的驱动程序或应用程序,然后将其更新为最新版本或卸载此驱动程序或程序。
2 如果在启动过程中出现错误,则请尝试启动至最后一次正确配置。
3 如果安装程序或驱动程序后出现错误,则请卸载此程序或驱动程序。
4 重新拔插内存和硬盘数据线后,请尝试运行硬盘和内存全面诊断程序。
STOP 0x000000D1(DRIVER_IRQL_NOT_LESS_THAN_OR_EQUAL_TO)
此Stop代码表示驱动程序尝试访问它不应访问的特定内存区域,即驱动程序本身存在缺陷。故障诊断的目的是找到此驱动程序,并禁用或更换它。使用Windows调试程序诊断此错误。
如果没有此调试程序,则您只能卸载/更新/回滚蓝屏信息中提到的包含驱动程序文件的驱动程序。
STOP 0xC0000218(STATUS_CANNOT_LOAD_REGISTRY_FILE)
此Stop代码表示注册表已损坏。
检查事项:
1 尝试启动至最后一次正确配置。
2 如果启动失败,则您必须尝试手动恢复注册表文件。手动恢复注册表的过程相当复杂,Microsoft知识库文章中已有说明:
STOP 0x000000EA(THREAD_STUCK_IN_DEVICE_DRIVER)
此蓝屏错误表示设备驱动程序(通常是显卡驱动程序)停滞以等待下一项操作(通常是硬件操作)。多数人可能已看到与此蓝屏信息相关联的nv4_disp.sys。
检查事项:
1 请确保视频驱动程序已更新为戴尔的最新版本。
2 系统BIOS已完全更新。
3 如果视频驱动程序和系统BIOS均已完全更新,则请咨询制造商以确定是否已将驱动程序更新为最新版本。
4 最后一种解决办法是尝试更换显卡。
“How to recover from a corrupted registry that prevents Windows XP from starting(如何恢复损坏的注册表以防止Windows XP启动)”重新安装Windows不可能阻止此错误再次出现。
Stop 0x0000007B(INACCESSIBLE_BOOT_DEVICE)
主题3: | 使用Windows调试程序 |
单击此处可查看Windows调试程序教程!- 注:只有英语版
Windows调试程序是Microsoft软件开发商和支持人员使用的一种主要工具,用于分析和处理导致内存转储的错误,您也可以尝试。
Windows调试程序是一种附带了很多有用应用程序的强大工具。但在本文中,我们只重点介绍其通过分析因蓝屏错误生成的内存转储文件以确定错误原因的功能。
使用此工具前,请记住以下内容:
- Windows调试程序不是真正的Windows工具。您必须从Microsoft网站上下载并安装此应用程序(15MB)。安装此工具要求用户具有管理员访问权限。
- 此调试程序要求在使用前进行小部分的自定义。
- 调试程序对内存转储进行完全分析时,最快要用30秒,最慢要2分钟。
要使用此工具,请执行以下步骤:
1 从Microsoft网站上下载并安装Windows调试程序。
![]() | 注: | |
如果您使用Google搜索“Windows调试程序”,返回的第一个链接将为Windows调试程序主页。 |
2 完成安装后,请单击
![]() | “start(开始)” | ![]() |
![](https://i-blog.csdnimg.cn/blog_migrate/68586a36a727bf8949bf949570eb60e9.jpeg)
![](http://static.oschina.net/uploads/img/201301/31191325_KecA.gif)
![](http://static.oschina.net/uploads/img/201301/31191325_2UFx.gif)
3 配置调试程序使用的符号路径,以便将内存转储文件的地址转为有意义的位置名称:展开“File(文件)”菜单,选择“Symbol File Path(符号文件路径)”,在对话框中键入"SRV*c:\debug_symbols*http://msdl.microsoft.com/download/symbols",然后单击“OK(确定)”。
4 打开一个微型转储文件:展开“File(文件)”菜单,选择“Open Crash Dump(打开崩溃转储)”,并选择所需的转储文件,然后单击“Open(打开)”。
![]() | 注: | |
系统通常将微型转储文件存储在以下其中一个路径中:C:\WINNT\Minidump\或C:\Windows\Minidump\。文件将被命名为miniMMDDYY-NN.dmp,其中MM代表月,DD代表日,YY则代表创建转储文件的年份。如果多个转储文件于同一天生成,NN则是创建转储文件的序号(给定日生成的第一个崩溃转储的编号是01,第二个的编号是02,依此类推)。 |
5 调试程序将打开转储文件,并对导致系统崩溃的原因作出简短说明。(图2)
![]() | 注: | |
首次使用调试程序在系统中打开并转储文件时,在其返回任何信息之前,将花费几分钟下载背景中的符号信息。 |
图2:Windows调试程序
![]() | 调试程序命令行的建议命令 |
![]() | 蓝屏的Stop代码(1000007F与0x7F相同) |
![]() | Windows认为导致崩溃的原因(在atapi.sys一例中,您有时会看到memory_corruption等内容) |
6 当它返回初步分析时,调试程序将告诉您如何进行深入分析。在窗口底部的命令行(kd>)字段中键入"!analyze -v",并按Enter键,以使WinDbg对此文件进行详细分析。
![]() | 注: | |
分析结果会很长,您可能需要在调试程序窗口中通过垂直滚动找到所有相关信息。 |
图3:分析结果
![]() | Stop代码的详细说明(在本例中,您可以看到内核在尝试处理错误时遇到了EXCEPTION_DOUBLE_FAULT(8)或错误) |
图4 :进一步分析结果
![]() | 错误检查代码(注意:此例中的数字8表示双重故障) |
![]() | 系统因为此确切错误而崩溃的次数(通常是1) |
![]() | Windows在其中对崩溃进行分类的存储桶 |
![]() | 系统崩溃时的堆栈记录,其中顶部列出了最近调用的程序(您可以看到系统在处理IDE控制器请求时发生崩溃的实例) |
图5:其它分析
![]() | 系统崩溃时所在的模块名称。在实际系统中,模块名称是一个链接,通过单击它您可以收到一些关于此模块的有用信息,如创建者、创建历史等。 |
![]() | 系统崩溃时所在的模块名称。在实际系统中,模块名称是一个链接,通过单击它您可以收到一些关于此模块的有用信息,如创建者、创建历史等。 |
![]() | 系统崩溃时所在的模块名称。在实际系统中,模块名称是一个链接,通过单击它您可以收到一些关于此模块的有用信息,如创建者、创建历史等。 |