为什么Windows 会蓝屏?
NT内核的操作系统采用的是分层结构(层又称为模式), 主要有用户层(User Mode)和内核层(Kernel Mode), 我们可以通过下面这个形象的比喻来理解Windows的运行规范和蓝屏起因.
平时产品制造厂运行得有序而高效, 每个 生产小组加班加点制造各种用途的产品, 工厂里有个极为严格的规定, 那就是不管要用什么装配零件, 都必须经过直接控制所有零件的厂领导(具有高特许级别, 可以直接访问所欧硬件和内存)的批准, 之后才能到仓库中提取相应零件, 而生产小组只负责生产(只拥有较低权限, 不能直接访问硬件和有限地利用内存).
有一天, A生产小组没有经过厂领导批准, 偷偷跑到仓库里面想拿一个装配零件, 但马上被年年被评为先进的值班员Dr.Watson发现了, 于是Dr.Watson理解通知厂领导, 这个生产小组的工作马上被停止, 而且还在厂宣传栏上贴出一个告示:XXX生产小组出现了错误, 厂领导决定马上将其关闭、整顿, 并会产生记录在案, 以观后效.
但A生产小组的错误似乎没有引起大家的注意, 一天, D生产小组居然闯入仓库哄抢装配零件, 为了防止零件资源失控, 产生更严重的混乱, 厂领导立即决定停止整个工厂的工作, 并命令保卫科对所有生长小组进行全面检查, 保卫科在检查后为厂领导提交了一份用蓝色纸写的报告, 这个报告主要分成三部分:故障信息、推荐操作、调试端口信息.
Quote:
1.故障检查信息
***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4)
KMODE_EXCEPTION_NOT_HANDLED ***
其中错误的第一部分是停机码(Stop Code)也就是STOP 0x0000001E, 用于识别已发生错误的类型, 错误第二部分是被括号括起来的四个数字集, 表示随机的开发人员定义的参数(这个参数对于普通用户根本无法理解, 只有驱动程序编写者或者 微软操作系统的开发人员才懂). 第三部分是错误名. 信息第一行通常用来识别生产错误的驱动程序或者设备. 这种信息多数很简洁, 但停机码可以作为搜索项在 微软知识库和其他技术资料中使用.
Quote:
2.推荐操作
蓝屏第二部分是推荐用户进行的操作信息. 有时, 推荐的操作仅仅是一般性的建议(比如: 到销售商网站查找BIOS的更新等); 有时, 也就是显示一条与当前问题相关的提示. 一般来说, 惟一的建议就是重启.
Quote:
3.调试端口告诉用户内存转储映像是否写到磁盘商了, 使用内存转储映像可以确定发生问题的性质, 还会告诉用户调试信息是否被传到另一台电脑商, 以及使用了什么端口完成这次通讯. 不过, 这里的信息对于普通用户来说, 没有什么意义.
Quote:
有时保卫科可以顺利的查到是哪个生产小组的问题, 会在第一部分明确报告是哪个文件犯的错, 但常常它也只能查个大概范围, 而无法明确指明问题所在. 由于工厂全面被迫停止, 只有重新整顿开工, 有时, 那个生产小组会意识到错误 , 不再重犯. 但有时仍然会试图哄抢零件, 于是厂领导不得不重复停工决定(不能启动并显示蓝屏信息, 或在进行相同操作时再次出现蓝屏).
经典蓝屏案意义破解
Quote:
┌─┐
│ 1│
└─┘0x0000000A:IRQL_NOT_LESS_OR_EQUAL
◆错误分析:主要是由问题的驱动程序、有缺陷或不兼容的硬件与软件造成的. 从技术角度讲. 表明在内核模式中存在以太高的进程内部请求级别(IRQL)访问其没有权限访问的内存地址.
◇解决方案:请用前面介绍的解决方案中的2、3、5、8、9方案尝试排除.
Quote:
┌─┐
│ 2│
└─┘0x00000012:TRAP_CAUSE_UNKNOWN
◆错误分析:如果遇到这个错误信息, 那么很不幸, 应为KeBudCheck分析的结果是错误原因未知.
◇解决方案:既然 微软都帮不上忙, 就得*自己了, 请仔细回想这个错误是什么时候出现的; 第一次发生时你对系统做了哪些操作; 发生时正在进行什么操作. 从这些信息中找出可能的原因, 从而选择相应解决方案尝试排除.
Quote:
┌─┐
│ 3│
└─┘0x0000001A:MEMORY_MANAGEMENT
◆错误分析:这个内存管理错误往往是由硬件引起的, 比如: 新安装的硬件、内存本身有问题等.
◇解决方案:如果是在安装Windows时出现, 有可能是由于你的电脑达不到安装Windows的最小内存和磁盘要求.
Quote:
┌─┐
│ 4│
└─┘0x0000001E:KMODE_EXCEPTION_NOT_HANDLED
◆错误分析:Windows内核检查到一个非法或者未知的进程指令, 这个停机码一般是由问题的内存或是与前面0x0000000A相似的原因造成的.
◇解决方案:
(1)硬件兼容有问题:请对照前面提到的最新硬件兼容性列表, 查看所有硬件是否包含在该列表中.
(2)有问题的设备驱动、系统服务或内存冲突和中断冲突: 如果在蓝屏信息中出现了驱动程序的名字, 请试着在安装模式或者故障恢复控制台中禁用或删除驱动程序, 并禁用所有刚安装的驱动和软件. 如果错误出现在系统启动过程中, 请进入安全模式, 将蓝屏信息中所标明的文件重命名或者删除.
(3)如果错误信息中明确指出Win32K.sys: 很有可能是第三方远程控制软件造成的, 需要从故障恢复控制台中将对该软件的服务关闭.
(4)在安装Windows后第一次重启时出现:最大嫌疑可能时系统分区的磁盘空间不足或BIOS兼容有问题.
(5)如果是在关闭某个软件时出现的:很有可能时软件本省存在设计缺陷, 请升级或卸载它.
Quote:
┌─┐
│ 5│0x00000023:FAT_FILE_SYSTEM
└─┘0x00000024:NTFS_FILE_SYSTEM
◆错误分析:0x00000023通常发生在读写FAT16或者FAT32文件系统的系统分区时, 而0x00000024则是由于NTFS.sys文件出现错误(这个驱动文件的作用是容许系统读写使用NTFS文件系统的磁盘). 这两个蓝屏错误很有可能是磁盘本身存在物理损坏, 或是中断要求封包(IRP)损坏而导致的. 其他原因还包括:硬盘磁盘碎片过多; 文件读写操作过于频繁, 并且数据量非常达或者是由于一些磁盘镜像软件或杀毒软件引起的.
◇解决方案:
第一步:首先打开命令行提示符, 运行"Chkdsk /r"(注:不是CHKDISK, 感觉象这个, 但是……)命令检查并修复硬盘错误, 如果报告存在怀道(Bad Track), 请使用硬盘厂商提供的检查工具进行检查和修复.
第二步:接着禁用所有即使扫描文件的软件, 比如:杀毒软件、防火墙或备份工具.
第三步:右击C:\winnt\system32\drivers\fastfat.sys文件并选择"属性", 查看其版本是否与当前系统所使用的Windows版本相符.(注:如果是XP, 应该是C:\windows\system32\drivers\fastfat.sys)
第四步:安装最新的主板驱动程序, 特别IDE驱动. 如果你的光驱、可移动存储器也提供有驱动程序, 最好将它们升级至最新版.
Quote:
┌─┐
│ 6│
└─┘0x00000027:RDR_FILE_SYSTEM
◆错误分析:这个错误产生的原因很难判断, 不过Windows内存管理出了问题很可能会导致这个停机码的出现.
◇解决方案:如果是内存管理的缘故, 通常增加内存会解决问题.
Quote:
┌─┐
│ 7│
└─┘0x0000002E:DATA_BUS_ERROR
◆错误分析:系统内存存储器奇偶校验产生错误, 通常是因为有缺陷的内存(包括物理内存、二级缓存或者显卡显存)时设备驱动程序访问不存在的内存地址等原因引起的. 另外, 硬盘被病毒或者其他问题所损伤, 以出现这个停机码.
◇解决方案:
(1)检查病毒
(2)使用"chkdsk /r"命令检查所有磁盘分区.
(3)用Memtest86等内存测试软件检查内存.
(4)检查硬件是否正确安装, 比如:是否牢固、金手指是否有污渍.
Quote:
┌─┐
│ 8│
└─┘0x00000035:NO_MORE_IRP_STACK_LOCATIONS
◆错误分析:从字面上理解, 应该时驱动程序或某些软件出现堆栈问题. 其实这个故障的真正原因应该时驱动程序本省存在问题, 或是内存有质量问题.
◇解决方案:请使用前面介绍的常规解决方案中与驱动程序和内存相关的方案进行排除.
Quote:
┌─┐
│ 9│
└─┘0x0000003F:NO_MORE_SYSTEM_PTES
◆错误分析:一个与系统内存管理相关的错误, 比如:由于执行了大量的输入/输出操作, 造成内存管理出现问题: 有缺陷的驱动程序不正确地使用内存资源; 某个应用程序(比如:备份软件)被分配了大量的内核内存等.
◇解决方案:卸载所有最新安装的软件(特别是哪些增强磁盘性能的应用程序和杀毒软件)和驱动程序.
Quote:
┌─┐
│10│
└─┘0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS
◆错误分析:通常是由硬件驱动程序引起的.
◇解决方案:卸载最近安装的驱动程序. 这个故障很少出现, 目前已经知道的是, 在使用这家公司的某些软件时会出现, 其中的罪魁就是Falstaff.sys文件.(作者难道不怕吃官司嘛, 把公司网址公布)