1 0×00000001 不正确的函数。 2 0×00000002 系统找不到指定的档案。 3 0×00000003 系统找不到指定的路径。 4 0×00000004 系统没法开启档案。 5 0×00000005 拒绝存取。 6 0×00000006 无效的代码。 7 0×00000007 储存体控制区块已毁。 8 0×00000008 储存体空间不足,没法处理这个指令。 9 0×00000009 储存体控制区块地址无效。 10 0×0000000A 环境不正确。 11 0×0000000B 尝试加载一个格式错误的程序。 12 0×0000000C 存取码错误。 13 0×0000000D 资料错误。 14 0×0000000E 储存体空间不够,没法完成这项做业。 15 0×0000000F 系统找不到指定的磁盘驱动器。 16 0×00000010 没法移除目录。 17 0×00000011 系统没法将档案移到其它的磁盘驱动器。 18 0×00000012 没有任何档案。 19 0×00000013 储存媒体为写保护状态。 20 0×00000014 系统找不到指定的装置。 21 0×00000015 装置还没有就绪。 22 0×00000016 装置没法识别指令。 23 0×00000017 资料错误(cyclic redundancy check) 24 0×00000018 程序发出一个长度错误的指令。 25 0×00000019 磁盘驱动器在磁盘找不到持定的扇区或磁道。 26 0×0000001A 指定的磁盘或磁盘没法存取。 27 0×0000001B 磁盘驱动器找不到要求的扇区。 28 0×0000001C 打印机没有纸。 29 0×0000001D 系统没法将资料写入指定的磁盘驱动器。 30 0×0000001E 系统没法读取指定的装置。 31 0×0000001F 链接到系统的某个装置没有做用。 32 0×00000020 该进程没法访问文件,由于它正由另外一个进程使用。 33 0×00000021 档案的一部份被锁定,如今没法存取。 34 0×00000022 磁盘驱动器的磁盘不正确。请将%2 (Volume Serial Number: %3) 插入磁盘机%1。 35 0×00000024 开启的分享档案数量太多。 36 0×00000026 到达档案结尾。 37 0×00000027 磁盘已满。 38 0×00000032 不支持这种网络要求。 39 0×00000033 远程计算机没法使用。 40 0×00000034 网络名称重复。 41 0×00000035 网络路径找不到。 42 0×00000036 网络忙碌中。 43 0×00000037 指定的网络资源或设备不可再用。 44 0×00000038 网络BIOS命令限制已经达到 45 0×00000039 网络配接卡发生问题。 46 0×0000003A 指定的服务器没法执行要求的做业。 47 0×0000003B 网络发生意外错误。 48 0×0000003C 远程配接卡不兼容。 49 0×0000003D 打印机队列已满。 50 0×0000003E 服务器的空间没法储存等候打印的档案。 51 0×0000003F 等候打印的档案已经删除。 52 0×00000040 指定的网络名称没法使用。 53 0×00000041 拒绝存取网络。 54 0×00000042 网络资源类型错误。 55 0×00000043 网络名称找不到。 56 0×00000044 超过区域计算机网络配接卡的名称限制。 57 0×00000045 超过网络BIOS 做业阶段的限制。 58 0×00000046 远程服务器已经暂停或者正在起始中。 59 0×00000047 因为联机数目已达上限,此时没法再联机到这台远程计算机。 60 0×00000048 指定的打印机或磁盘装置已经暂停做用。 61 0×00000050 档案已经存在。 62 0×00000052 没法创建目录或档案。 63 0×00000053 INT 24 失败 64 0×00000054 处理这项要求的储存体没法使用。 65 0×00000055 近端装置名称已经在使用中。 66 0×00000056 指定的网络密码错误。 67 0×00000057 参数错误。 68 0×00000058 网络发生资料写入错误。 69 0×00000059 此时系统没法执行其它行程。 使用windows出现蓝色屏幕是常常的事,并且往往由于不清楚错误的来源而频繁从新安装系统,劳神费时。星晴吧收集了一些windows死机密码,供你们参考。 代码含义 1.0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆错误分析:主要是由问题的驱动程序、有缺陷或不兼容的硬件与软件形成的。 从技术角度讲. 代表在内核模式中有级别进程请求(IRQL)访问其没有权限访问的内存地址。 ◇解决方案:请用前面介绍的解决方案中的二、三、五、八、9方案尝试排除. 二、0x00000012:TRAP_CAUSE_UNKNOWN ◆错误分析:若是遇到这个错误信息, 那么很不幸, 应为KeBudCheck分析的结果是错误缘由 未知。 ◇解决方案:既然微软都帮不上忙, 就得靠本身了, 请仔细回想这个错误是何时出现的; 第一次发生时你对系统作了哪些操做; 发生时正在进行什么操做. 从这些信息中找出可能的缘由, 从而选择相应解决方案尝试排除。 三、0x0000001A:MEMORY_MANAGEMENT ◆错误分析:这个内存管理错误每每是由硬件引发的, 好比: 新安装的硬件、内存自己有问题等. ◇解决方案:若是是在安装Windows时出现, 有多是因为你的电脑达不到安装Windows的最小内存和磁盘要求。 四、0x0000001E:KMODE_EXCEPTION_NOT_HANDLED ◆错误分析:Windows内核检查到一个非法或者未知的进程指令,这个停机码通常是由问题的内存或是与前面0x0000000A类似的缘由形成的. ◇解决方案: (1)硬件兼容有问题:请对照前面提到的最新硬件兼容性列表, 查看全部硬件是否包含在该列表中。 (2)有问题的设备驱动、系统服务或内存冲突和中断冲突: 若是在蓝屏信息中出现了驱动程序的名字, 请试着在安装模式或者故障恢复控制台中禁用或删除驱动程序, 并禁用全部刚安装的驱动和软件. 若是错误出如今系统启动过程当中, 请进入安全模式, 将蓝屏信息中所标明的文件重命名或者删除。 (3)若是错误信息中明确指出Win32K.sys: 颇有多是第三方远程控制软件形成的, 须要从故障恢复控制台中将对该软件的服务关闭。 (4)在安装Windows后第一次重启时出现:最大嫌疑可能时系统分区的磁盘空间不足或BIOS兼容有问题. (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驱动. 若是你的光驱、可移动存储器也提供有驱动程序, 最好将它们升级至最新版。 六、0x00000027:RDR_FILE_SYSTEM ◆错误分析:这个错误产生的缘由很难判断, 不过Windows内存管理出了问题极可能会致使这个停机码的出现. ◇解决方案:若是是内存管理的缘故, 一般增长内存会解决问题。 七、0x0000002EATA_BUS_ERROR ◆错误分析:系统内存存储器奇偶校验产生错误, 一般是由于有缺陷的内存(包括物理内存、二级缓存或者显卡显存)时设备驱动程序访问不存在的内存地址等缘由引发的. 另外, 硬盘被病毒或者其余问题所损伤, 以出现这个停机码。 ◇解决方案: (1)检查病毒 (2)使用"chkdsk /r"命令检查全部磁盘分区. (3)用Memtest86等内存测试软件检查内存。 (4)检查硬件是否正确安装, 好比:是否牢固、金手指是否有污渍. 八、0x00000035:NO_MORE_IRP_STACK_LOCATIONS ◆错误分析:从字面上理解, 应该时驱动程序或某些软件出现堆栈问题。 其实这个故障的真正缘由应该时驱动程序本生存在问题, 或是内存有质量问题. ◇解决方案:请使用前面介绍的常规解决方案中与驱动程序和内存相关的方案进行排除。 九、0x0000003F:NO_MORE_SYSTEM_PTES ◆错误分析:一个与系统内存管理相关的错误, 好比:因为执行了大量的输入/输出操做, 形成内存管理出现问题: 有缺陷的驱动程序不正确地使用内存资源; 某个应用程序(好比:备份软件)被分配了大量的内核内存等. ◇解决方案:卸载全部最新安装的软件(特别是哪些加强磁盘性能的应用程序和杀毒软件)和驱动程序。 十、0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS ◆错误分析:一般是由硬件驱动程序引发的. ◇解决方案:卸载最近安装的驱动程序。 这个故障不多出现, 目前已经知道的是, 在使用这家公司的某些软件时会出现, 其中的罪魁就是Falstaff.sys文件。(做者难道不怕吃官司嘛, 把公司网址公布) 十一、0x00000050: PAGE_FAULT_IN_NONPAGED+AREA ◆错误分析:有问题的内存(包括物理内存、二级缓存、显存)、不兼容的软件(主要是远程控制和杀毒软件)、损坏的NTFS卷以及有问题的硬件(好比: PCI插卡自己已损坏)等都会引起这个错误. ◇解决方案:请使用前面介绍的常规解决方案中与内存、软件、硬件、硬盘等相关的方案进行排除。 若是电脑中安装有maxdos(或是用maxdos的启动盘)也能够在命令模式下直接删除C盘的页面文件。 十二、0x00000051:REGISTRY_ERROR ◆错误分析:这个停机码说明注册表或系统配置管理器出现错误, 因为硬盘自己有物理损坏或文件系统存在问题, 从而形成在读取注册文件时出现输入/输出错误. ◇解决方案:使用"chkdsk /r"检查并修复磁盘错误。 1三、0x00000058:FTDISK_INTERNAL_ERROR ◆错误分析:说明在容错集的主驱动发生错误. ? ◇解决方案:首先尝试重启电脑看是否能解决问题, 若是不行, 则尝试"最后一次正确配置"进行解决。 1四、0x0000005E:CRITICAL_SERVICE_FAILED ◆错误分析:某个很是重要的系统服务启动识别形成的. ◇解决方案:若是是在安装了某个新硬件后出新的, 能够先移除该硬件, 并经过网上列表检查它是否与Windows 2K/XP兼容, 接着启动电脑, 若是蓝屏仍是出现, 请使用"最后一次正确配置"来启动Windows, 若是这样仍是失败, 建议进行修复安装或是重装。 1五、0x0000006F:SESSION3_INITIALIZATION-FAILED ◆错误分析:这个错误一般出如今Windows启动时, 通常是由有问题的驱动程序或损坏的系统文件引发的. ◇解决方案:建议使用Windows安装光盘对系统进行修复安装。 1六、0x00000076ROCESS_HAS_LOCKED_PAGES ◆错误分析:一般是由于某个驱动程序在完成了一次输入/输出操做后, 没有正确释放所占有的内存 ◇解决方案: 第一步:点击开始-->运行:regedt32, 找到[HKLM\SYSTEM\Currentcontrol set\control\session manager\memory management], 在右侧新建双字节值"TrackLockedPages", 值为1. 这样Windows便会在错误再次出现时跟踪到是哪一个驱动程序的问题。第二步:若是再次出现蓝屏, 那么错误信息会变成:STOP:0x0000000CB(0xY,0xY,0xY,0xY)DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS其中第四个"0xY"会显示为问题驱动程序的名字, 接着对其进行更新或删除.第三步:进入注册表, 删除添加的"TrackLockedPages". 1七、0x00000077:KERNEL_STACK_INPAGE_ERROR ◆错误分析:说明须要使用的内核数据没有在虚拟内存或物理内存中找到。 这个错误经常是磁盘有问题, 相应数据损坏或受到病毒侵蚀. ◇解决方案:使用杀毒软件扫描系统; 使用"chkdsk /r"命令检查并修复磁盘错误, 如不行则使用磁盘厂商提供的工具检查修复。 1八、0x0000007A:KERNEL_DATA_INPAGE_ERROR ◆错误分析:这个错误每每是虚拟内存中的内核数据没法读入内存形成的. 缘由多是虚拟内存页面文件中存在坏簇病毒、磁盘控制器出错、内存有问题。 ◇解决方案:首先用升级为最新病毒库杀毒软件查杀病毒, 若是信息中还有0xC000009C或0xC000016A代码, 那么表示是坏簇形成的, 而且系统的磁盘检测工具没法自动修复, 这时要进入"故障恢复控制台", 用"chkdsk /r"命令进行手动修复. 1九、0x0000007B:INACESSIBLE_BOOT_DEVICE ◆错误分析:Windows在启动过程当中没法访问系统分区或启动卷。 通常发生在更换主板后第一次启动时, 主要是由于新主板和旧主板的IDE控制器使用了不一样芯片组形成的. 有时也多是病毒或硬盘损伤所引发的。 ◇解决方案:通常只要用安装光盘启动电脑, 而后执行修复安装便可解决问题. 对于病毒则可以使用DOS版的杀毒软件进行查杀(有kv2005DOS版下载). 若是是硬盘自己存在问题, 请将其安装到其余电脑中, 而后使用"chkdsk /r"来检查并修复磁盘错误。 若是是BIOS设置问题,只要将BIOS设置IDE模式便可. 20、0x0000007E:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED ◆错误分析:系统进程产生错误, 但Windows错误处理器没法捕获。 其产生缘由不少, 包括:硬件兼容性、有问题的驱动程序或系统服务、或者是某些软件. ◇解决方案:请使用"事件查看器"来获取更多的信息, 从中发现错误根源。(发现好像不是解决哦, 看来这里你们要自力更生了!) 2一、0x0000007F:UNEXPECTED_KERNEL_MOED_TRAP ◆错误分析:通常是因为有问题的硬件(好比:内存)或某些软件引发的. 有时超频也会产生这个错误。 ◇解决方案:用检测软件(好比:Memtest86)检查内存, 若是进行了超频, 请取消超频. 将PCI硬件插卡从主板插槽拔下来, 或更换插槽。 另外, 有些主板(好比:nForce2主板)在进行超频后, 南桥芯片过热也会致使蓝屏, 此时为该芯片单独增长散热片每每能够有效解决问题. 2二、0x00000080:NMI_HARDWARE_FAILURE ◆错误分析:一般是有硬件引发的。(彷佛蓝屏与硬件错误有不解之缘) ◇解决方案:若是最近安装了新硬件, 请将其移除, 而后试试更换插槽和安装最新的驱动程序, 若是升级了驱动程序, 请恢复后原来的版本; 检查内存金手指是否有污染和损坏; 扫描病毒; 运行"chkdsk /r"检查并修复磁盘错误; 检查全部硬件插卡已经插牢. 若是以上尝试都无效果, 就得找专业的电脑维修公司请求帮助了。 2三、0x0000008E:KERNEL_MODE_EXCEPTION_NOT_HANDLED ◆错误分析:内核级应用程序产生了错误, 但Windows错误处理器没有捕获. 一般是硬件兼容性错误。 ◇解决方案:升级驱动程序或升级BIOS. 2四、0x0000009C:MACHINE_CHECK_EXCEPTION ◆错误分析:一般是硬件引发的。 通常是由于超频或是硬件存在问题(内存、CPU、总线、电 源). ◇解决方案:若是进行了超频, 请降下CPU原来频率, 检查硬件。 2五、0x0000009DRIVER_POWER_STATE_FAILURE ◆错误分析:每每与电源有关系, 经常发生在与电源相关的操做, 好比:关机、待机或休睡. ◇解决方案:重装系统, 若是不能解决, 请更换电源。 2六、0x000000A5:ACPI_BIOS_ERROR ◆错误分析:一般是由于主板BIOS不能全面支持ACPI规范. ◇解决方案:若是没有相应BIOS升级, 那么可在安装Windows 2K/XP时, 当出现"press F6 if you need to install a third-party SCSI or RAID driver"提示时, 按下F7键, 这样Windows便会自动禁止安装ACPI HAL, 而安装Standard PC HAL. 2七、0x000000B4:VIDEO_DRIVER_INIT_FAILURE ◆错误分析:这个中止信息表示Windows由于不能启动显卡驱动, 从而没法进入图形界面. 一般是显卡的问题, 或者是存在与显卡的硬件冲突(好比:与并行或串行端口冲突). ◇解决方案:进入安全模式查看问题是否解决, 若是能够, 请升级最新的显卡驱动程序, 若是还不行, 则极可能是显卡与并行端口存在冲突, 须要在安全模式按下WIN+break组合键打开"系统属性", 在硬件-->设备管理器中找到并双击链接打印的LPT1端口的选项, 在"资源"选项卡中取消"使用自动配置"的勾选, 而后将"输入/输出范围"的"03BC"改成"0378". 2八、0x000000BE:ATTEMPTED_WRITE_TO_READONLY_MEMORY ◆错误分析:某个驱动程序试图向只读内存写入数据形成的。 一般是在安装了新的驱动程序, 系统服务或升级了设备的固件程序后. ◇解决方案:若是在错误信息中包含有驱动程序或者服务文件名称, 请根据这个信息将新安装的驱动程序或软件卸载或禁用。 2九、0x000000C2:BAD_POOL_CALLER ◆错误分析:一个内核层的进程或驱动程序错误地试图进入内存操做. 一般是驱动程序或存在BUG的软件形成的。 ◇解决方案:请参考前面介绍的常规解决方案相关项目进行排除. 30、0x000000CERIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS ◆错误分析:一般是由有问题的驱动程序或系统服务形成的。 ◇解决方案:请参考前面介绍的常规解决方案相关项目进行排除. 3一、0x000000D1RIVER_IRQL_NOT_LESS_OR_EQUAL ◆错误分析:一般是由有问题的驱动程序引发的(好比罗技鼠标的Logitech MouseWare 9.10和9.24版驱动程序会引起这个故障). 同时,有缺陷的内存、损坏的虚拟内存文件、 某些软件(好比多媒体软件、杀毒软件、备份软件、DVD播放软件)等也会致使这个错误。 ◇解决方案:检查最新安装或升级的驱动程序(若是蓝屏中出现"acpi.sys"等相似文件名, 能够很是确定是驱动程序问题)和软件; 测试内存是否存在问题; 进入"故障恢复控制台", 转到虚拟内存页面文件Pagefile.sys所在分区, 执行"del pagefile.sys"命令, 将页面文件删除; 而后在页面文件所在分区执行"chkdsk /r"命令;进入Windows后从新设置虚拟内存。若是在上网时遇到这个蓝屏, 而你偏偏又在进行大量的数据下载和上传(好比:网络游戏、BT下载), 那么应该是网卡驱动的问题, 须要升级其驱动程序. 3二、0x000000EA:THREAD_STUCK_IN_DEVICE_DRIVER ◆错误分析:一般是由显卡或显卡驱动程序引起的。 ◇解决方案:先升级最新的显卡驱动, 若是不行, 则须要更换显卡测试故障是否依然发生. 3三、0x000000ED:UNMOUNTABLE_BOOT_VOLUME ◆错误分析:通常是因为磁盘存在错误致使的, 有时也建议检查硬盘连线是否接触不良, 或是没有使用合乎该硬盘传输规格的链接线, 例如ATA-100仍使用ATA-33的链接线, 对低速硬盘无所谓, 但高速硬盘(支持ATA-66以上)的要求较严格, 规格不对的连线有时也会引发这类没办法开机的故障。 若是在修复后, 仍是常常出现这个错误, 极可能是硬盘损坏的前兆. ◇解决方案:通常状况下, 重启会解决问题, 无论怎么样都建议执行"chkdsk /r"命令来检查修复硬盘 3四、0x000000F2:HARDWAREINTERRUPT_STORM ◆错误分析:内核层检查到系统出现中断错误, 好比:某个设备在完成操做后没有释放所占用的中断。 一般这是由缺陷的驱动程序形成的. ◇解决方案:升级或卸载最新安装的硬件驱动程序。 3五、0x00000135:UNABLE_TO_LOCATE_DLL ◆错误分析:一般表示某个文件丢失或已经损坏, 或者是注册表出现错误. ◇解决方案:若是是文件丢失或损坏, 在蓝屏信息中一般会显示相应的文件名, 你能够经过网络或是其余电脑找到相应的文件, 并将其复制到系统文件夹下的SYSTEM32子文件夹中。 若是没有显示文件名, 那就颇有多是注册表损坏, 请利用系统还原或是之前的注册表备份进行恢复. 3六、0x0000021A:STATUS_SYSTEM_PROCESS_TERMINATED ◆错误分析:用户模式子系统, 例如Winlogon或客服服务运行时子系统(CSRSS)已损坏, 因此没法再保证安全性, 致使系统没法启动。 有时, 当系统管理员错误地修改了用户账号权限, 致使其没法访问系统文件和文件夹. ◇解决方案:使用"最后一次正确的配置", 若是无效, 可以使用安装光盘进行修复安装。 3七、STOP 0xC0000221 or STATUS_IMAGE_CHECKSUM_MISMATCH ◆错误分析:一般是因为驱动程序或系统DLL文件损坏形成的. 通常状况下, 在蓝屏中会出现 文件名称 .sys文件 3. 将其重命名,如:XXXintelppm.sys 4. 重启。 一、运行在内核模式下的设备驱动程序或者操做系统函数引起了一个未被处理的异常,好比内存访问违例(因为企图写一个只读页面或者企图读一个当前未被映射的内存地址(即无效地址)而引发)。 二、调用一个内核支持例程致使了从新调度,好比当中断请求级别(IRQL)为DPC/Dispatch级别或更高级别时等待一个标记为须要等待的调度对象。 三、在DPC/Dispatch级别或更高的IRQL级别时因为数据存在于页面文件或内存映射文件中而发生了页面错误(Page Fault)。(这将要求内存管理器必须等待一个I/O操做发生。但正如上面一项所说,在DPC/Dispatch级别或更高IRQL级别上不可以进行等待,由于那将要求一次从新调度)。 四、当检测到一个内部状态代表数据已遭受破坏或者在保证数据不被破坏的状况下系统没法继续执行时,设备驱动程序或操做系统函数明确地要求系统崩溃(经过调用系统函数KeBugCheckEx)。 五、发生硬件错误,好比处理器的计算机检查异常功能(Machine Check)报告有异常或者发生不可屏蔽中断(NMI)。 在了解以上三点知识以后,相信您对Windows的大无畏牺牲精神会有所赞扬,也会原谅它的“蓝脸”了。其实,在绝大多数状况下均是第三方设备驱动程序致使了Windows的崩溃。对于Windows XP用户提交给微软在线崩溃分析(Microsoft OCA, Microsoft Online Crash Analysis)站点的内存转储文件,微软对引发崩溃的缘由进行了统计分类,以下图所示:(数据于2004年4月份生成)。 既然Windows向咱们露出了无奈的“蓝脸”,咱们就应该打破沙锅问到底,尽早将引起系统崩溃的罪魁祸首缉拿归案,让咱们的系统早日康复。下面,咱们来看看Windows想经过这张“蓝脸”告诉咱们些什么。 如上图所示,这是一张显示了全部参数的蓝屏图像。固然,咱们所遇到的蓝屏图像与之可能存在差别,好比少了一些信息等,可是大体是相同的,咱们就以它为例进行全面地阐述。 首先,咱们看看图中用数字1标注的区域,这里列出了传递给KeBugCheckEx函数的中止代码和四个参数。此图中的中止代码为0x000000D1,四个参数为后面括号内的用逗号分隔的四段16进制数字;接下来,咱们来看看图中用数字2标注的区域,这里显示的是该中止代码0x000000D1对应的英文解释;最后,咱们看看图中用数字3标注的区域,这个区域当且仅当中止代码的四个参数中的一个参数包含了操做系统或设备驱动程序代码的地址时才会显示,显示的内容为、该地址所处模块的基地址以及日期戳。如此例中,该设备驱动程序的文件名为“myfault.sys”。 这些信息对咱们排错有何做用呢?若是上图中的区域3出现了,那是最好的结果了,由于您直接就看到了罪魁祸首——“myfault.sys”文件。可是,区域3每每是不出现的,那么咱们就要在Microsoft的在线帮助和支持中查找该中止代码等信息或者使用咱们的利器——WinDbg进行手动分析了。笔者推荐后者,由于同一个中止代码可能由各类各样的驱动程序错误形成,获得了中止代码并不等于获得了问题文件名称,另外,微软的在线帮助和支持中不是全部的错误都可以搜索到,而WinDbg正好克服了这两个弱点,直接可以抓出罪魁祸首文件,让您痛快将其斩首。 WinDbg是免费软件,其微软官方下载地址参考扩展阅读,具体项目为Install Debugging Tools for Windows 32/64-bit Version。 使用WinDbg分析崩溃时的内存转储文件的前提是您要让系统在崩溃时自动生成一个内存转储文件,作法以下: 1.单击开始,而后单击运行。 2.键入 control sysdm.cpl ,而后单击肯定。您将会打开系统属性,请切换到高级选项卡。结果以下图所示: 3.在高级选项卡上,在启动和故障恢复部分中单击设置。这将打开启动和故障恢复对话框,以下图所示: 4.在写入调试信息列表中,选择“小内存转储(64 KB)”或“核心内存转储”,这样系统在崩溃时将会自动生成对应的内存转储文件。若是您不想让蓝屏只闪烁一下,而是想看清楚它直到您手动从新启动计算机,请清除系统失败部分中自动从新启动(R)项目前的复选框。而后单击肯定。 5.在启动和故障恢复对话框中,单击肯定。 6.单击肯定关闭系统属性对话框。 7.在系统设置更改对话框中,若是要当即从新启动计算机,则单击是;若是要稍后从新启动计算机,则单击否。 注:? Vista用户请相似操做。? 对于原版操做系统,以上设置是默认的(除了禁止自动从新启动)。? 对于第4点中的写入调试信息列表内容,现给出如下参照释义: (以上三种转储文件的大小依次增大,关于三者的比较不在本文讨论范围以内,笔者仅推荐设置为“小内存转储”或者“核心内存转储”,通常性错误“小内存转储”就足够了,如不能无缺分析请选择“核心内存转储”。为了数据的丰富性,您也能够直接选择“核心内存转储”,但笔者强烈不推荐彻底内存转储。) 值得注意的是,为了确保崩溃时自动生成内存转储文件,您可能还须启用虚拟内存页面文件。特别地,当您选择记录核心内存转储时,您必须启用虚拟内存页面文件,并且因为核心内存转储文件的大小取决于该机器上操做系统和全部活动驱动程序已经分配的内核模式内存的数量,所以没有很好的办法来预测内核内存转储的大小。下表仅给出该状况下的参考虚拟内存大小设置值: 另外,除了页面文件占用的磁盘空间,内存转储文件(*.DMP)的生成位置所在的磁盘还要有足够的空闲空间来提取这个转储文件,不然同样会“生成不了”(其实是丢失了)。 设置好这些以后,一旦您的系统发生蓝屏崩溃,系统就会在以上设置中选中的相应内存转储文件类型下对应的目录处生成转储文件。您所要作的就是马上拿出利器——启动WinDbg进行分析。 笔者在此将结合一个实例进行详细说明,过程当中包含了WinDbg调试蓝屏用到的一些命令,这些命令将再也不额外整理,请于阅读过程当中注意识记。 首先,您要配置WinDbg将要使用的调试符号文件(Symbol File)的位置。什么是调试符号文件呢?符号文件随DLL文件或者EXE文件创建时产生,提供包含在可执行文件和动态连接库(DLL) 中的函数的占位空间。此外,符号文件还能够表示达到失败点的函数调用路线图。当咱们使用各类Microsoft工具调试应用程序时,必须拥有符号信息,这样才能正确分析出问题根源。那咱们该如何设置调试符号文件的位置呢?咱们既能够从微软官网下载完整的符号文件包(同位于WinDbg下载页面),也可使用微软的符号文件服务器(Microsoft Symbol Server)。笔者推荐后者,由于一次分析所要用到的符号文件局限于有限的几个而已,使用后者可让程序自动下载,既节省时间,又能够确保符号文件是最新的而且是正确的。在WinDbg中点击“File”菜单,选择“Symbol File Path …”,在打开的对话框中输入 后点击“OK”按钮便可。固然,还有一步就是再次点击“File”菜单,选择“Save Workspace”来保存当前的设置。 设置了符号文件以后,您就能够进行内存转储文件的分析了。一样点击“File”菜单,此次要选择“Open Crash Dump …”,而后经过文件打开对话框打开生成的待分析的内存转储文件。本例中设置的是核心内存转储类型,因而应该定位至“%SystemRoot%”(即系统盘Windows文件夹下),打开MEMORY.DMP文件。可是笔者已经事先将其转移至“E:\Memory Dump\MEMORY.DMP”,所以在后续的图片中,您看到的是这个地址。此时WinDbg会滚动显示一些信息而且会稍有挂起的感受,直到从微软符号文件服务器下载完分析这个崩溃文件所须要的全部符号文件。 在上图中,咱们看到就是这个打开的调试器命令窗口(Debugger Command Window)(已经将符号文件加载完毕,待命),咱们先看看位于底部的区域6,这个小的长方条就是WinDbg的命令输入处(Command Entry),它又分为两个区域,左边显示“0: kd>”的是提示区,右边空白区是命令输入区。当刚打开这个窗口而符号文件还没有下载/加载完毕时,提示区域会什么都不显示,而命令输入区域将显示“Debuggee not connected”。直到符号加载完毕,窗口中显示出最后一行“Followup: MachineOwner”才会变为空闲状态。在空闲状态时,它将显示为与上图中相似的模样。为何说相似呢?由于这个空闲待命提示根据调试类型、计算机处理器硬件配置不一样,好比此例中,进行的是内核调试,因而显示“kd>”(kernel debug),系统为多(核)处理器,所以在“kd>”以前还显示一个“0:”,代表当前位于编号为0的处理器。在执行了某个命令以后,若是命令须要处理的任务较多(如“!analyze -v”),提示区域将显示为忙碌状态的“*BUSY*”,一旦显示为这个状态,您不论输入什么命令都不会当即执行,而是等待变为空闲状态时延缓执行。 如上图所示,图中区域1处将显示打开的这个内存转储文件的物理路经;区域2处显示的则是当前加载的符号文件的位置,本例中代表是从微软服务器下载;区域3共有三行,显示的为系统信息,第一行代表了系统为Windows XP,内核版本为2600(SP3),多处理器(2颗),32位,第二行代表了系统类型为NT系统,客户端系统,第三行代表系统的详细版本标识;区域4共两行,第一行代表该内存转储文件生成的时间,也就是系统崩溃的具体时间,本例中(这是去年12月获得的一个崩溃转储文件,现用做本例进行说明)为星期六(Sat),12月(Dec)27日,22:56:31.062,2008年,格林尼治标准时间东八区(GMT+8),第二行显示的是崩溃时自系统启动以来,系统共运行了0天4小时5分15.797秒。区域5是很关键的错误信息,它的第一行仅在加载符号文件遇到错误时显示,此例中,它告诉咱们“对于BaseTDI.SYS文件,模块已经加载完毕但却不可以为其加载符号文件”,若是以前配置了正确的符号文件路径,这就告诉咱们BaseTDI.SYS不是微软公司的文件,而是第三方驱动程序文件,这极可能是引发错误的缘由,值得关注但须进一步分析。区域5的第二行是WinDbg自动分析的结果,它告诉咱们,引发崩溃的缘由(Probably caused by:)极可能是HookUrl.sys文件。通常状况下,这就是引发错误的罪魁祸首了,可是也有很多的例外,最典型的就是显示一个微软本身的文件在此处,您可要注意了,为了不枉杀无辜,最好进一步分析来看看都有哪些模块牵扯在崩溃的最后一刻,这样就可以保证审判无误了!进一步分析的命令能够从“!analyze -v”开始。 咱们既能够在命令输入区域手动键入命令 !analyze -v ,也能够在上图中的区域7所示位置单击蓝色的这个命令。以后,提示区域将显示为“*BUSY*”,WinDbg将分析一段时间直到将结果显示完毕并再次转为空闲状态。下面咱们根据一张例图阐释执行“!analyze -v”后显示的各类结果: WinDbg通过自动的分析,可能会显示上图中区域1处所示第一行的错误检查说明(Bug Check Interpretation),而第二行则给出了详细的解释,从图中信息看得出,此例错误因为“驱动程序在队列工做项目完成以前卸载”形成的。这个“DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS”就应该是显示在蓝屏上方的错误说明字样,后面的Arguments1~4就是蓝屏时中止代码后面的四个参数。图中区域2所示的BUGCHECK_STR是WinDbg中分了类别的错误检查(Bug Check)的一项,此例中为0xCE,也是中止代码的分类简写,咱们在命令输入区执行 .bugcheck 命令,能够获得中止代码及其参数,这和上图的区域一、蓝屏上的信息是一致的。本例中能够获得以下结果: 0: kd> .bugcheck Bugcheck code 000000CE Arguments bacb0a4e 00000008 bacb0a4e 00000000 咱们在Bugcheck code值前补上“0x”就能够获得蓝屏上的信息“***STOP: 0x000000CE (bacb0a4e, 00000008, bacb0a4e, 00000000)”。固然,关于这个错误若是您想了解更多,一个是能够在微软在线帮助和支持网站上搜索字符串“0x000000CE”,再就是能够利用上图中区域2的BUGCHECK_STR值“0xCE”执行 .hh bug check 0xCE 命令,在打开的窗口左栏右下角点击“Display”按钮。若是要在WinDbg中显示一个中止代码或者错误检查类的详细说明(以此错误为例),键入命令 !analyze -show 0x000000CE 或者 !analyze -show 000000CE ,也能够是 !analyze -show 0xCE 。区域3中显示的就是二审判决的重要信息——线程堆栈信息。特别注意红色框内的部分,第一行是“WARNING: Frame IP not in any known module. Following frames may be wrong.”意思就是“警告:堆栈帧IP(InstructionPtr,仅x86处理器,用于决定帧的堆栈回朔的指令指针)不存在于任何已知的模块中,下面的帧可能出现错误”。这个意思的解释已超出本文讨论范围,笔者仅告诉你们,这行文字下面的一行右侧的模块是系统蓝屏崩溃时刻使用的最后一个模块(除了Windows内核最后调用KeBugCheckEx牺牲本身,就是警告文字上方的三行),每每就是它引发了崩溃!咱们来细看。你们若是了解了堆栈的数据结构或是Windows内存分配机制就应该知道,Windows为线程分配额外内存时是从高地指向低地址进行的,就是说,蓝色区域3中的堆栈信息咱们得倒过来由下往上看,这样才是系统崩溃以前的一刻内核态函数的调用和传递状况,好比此例,系统内核执行体(nt!,即Ntoskrnl.exe)经过函数IopfCallDriver调用了BaseTDI,而后BaseTDI又调用了HookUrl.sys(Unloaded_字样表示未加载),再而后就蓝屏了。那么在这最后一刻就涉及到了两个非Windows内核的模块——BaseTDI以及HookUrl.sys。之因此要进行这个“二审判决”,就是要避免一种状况——万一HookUrl.sys与BaseTDI是来自两个公司或者两个软件的模块,而最后加载的HookUrl.sys是没有问题的,出错是由于BaseTDI给HookUrl.sys传递了格式错误或者已被破坏的、或者非法的参数信息,HookUrl.sys接受此无效数据而引起了崩溃。若是咱们不看线程栈,就根据以前的“Probably Cause by:HookUrl.sys”进行判决,咱们颇有可能枉杀无辜而让凶手逍遥法外。只有经过线程栈咱们才能发现另外一个驱动程序BaseTDI也被牵连进来。(在应用程序崩溃不致系统崩溃的调试分析中,因为处于用户态,WinDbg自动分析结果中的“Probably Cause by:”几乎都是错误的。在这种状况下,使用!thread命令是不能显示出任何信息的,由于这个命令仅对内核态的崩溃调试有效,然而kb命令也显示不出有用的信息,只有用“~*kb”来显示详细的所有线程栈才可能发现问题根源,有的时候还需配合其余命令,本文不做讨论) 固然,若是您熟练之后,以为没有必要使用“!analyze -v”命令的话,能够直接使用 !thread 或者 kb 命令显示出核心的线程栈信息来二审判决。如今好了,犯罪嫌疑人目标锁定在BaseTDI和HookUrl.sys身上。如今,咱们来看看它们到底是什么、是哪一个公司、哪一个程序的模块。(从以前不可以自动从微软服务器为他们加载符号文件就能够知道,它们必定都是第三方驱动程序) 使用命令 lm kv m Basetdi* (使用lm(列出模块)命令和内核k选项、详细v选项以及参数m,配合包含通配符*的字符串BaseTDI,来列出当时已加载于内核模式的包含字符BaseTDI的全部驱动文件详细信息。使用通配符来取代完整的文件名后缀能够避免信息的局限性,借此也许能够发现多个相关的模块以提供更多诊断线索),咱们获得下图结果: 从图中蓝色框选部分,咱们能够看出,当时内核态下只有一个叫BaseTDI.SYS的文件,这个文件的路径位于System32\Drivers下,属于名称为“瑞星我的防火墙”(ProductName: Rising PFW, PFW=Personal Firewall)的程序组件,软件公司注册商标为“瑞星”(LegalTrademarks: RISING)。文件的这些英文描述信息若是您不知道,能够百度一下。固然,没有被笔者高亮显示的信息(如文件时间戳、版本、校验和等等)也是很是有用的,好比百度一下文件版本,也许您会发现该软件已经提供了更新的解决此问题的文件。一样,咱们使用 lm kv m hookurl* 来显示当时内核态下包含HookUrl的文件及其详细信息。结果以下: 图示是一个不使人满意的结果,由于如高亮部分所示,这个模块未被加载,所以没有信息被记录。不过咱们有百度,不用急,百度一下你就知道。在搜索完HookUrl.sys以后,发现这个也是瑞星我的防火墙的文件。其实这个案例就是著名的“瑞星我的防火墙跨版本升级到2009版时引起蓝屏”事件。您能够经过关键字“瑞星防火墙2009升级形成蓝屏”进行百度搜索。到目前为止,瑞星官方都没有任何针对此事件的正式答复,虽然不是每一个用户都出现此问题,可是很是多的用户都报告了此问题,瑞星也不认可这个是软件缺陷,只有官方卡卡论坛上有一个不知道是否是工做人员的人发帖要求你们遇到蓝屏就上传内存转储文件。说到这里,我对瑞星又要失望了,可是经过这个可见蓝屏内存转储文件的分析是多么的有用! 在这里,我还要给出两个要获得更多信息时可能会使用到的命令,一个是 !process 0 0 ,它能够列出当时运行着的全部进程的技术信息;另外一个则是 !vm ,它可以显示出当时的虚拟内存使用状况,这对于分析系统是否耗尽了虚拟内存、换页内存池或非换页内存池,并结合进程列表找到可能的内存泄漏错误很是有用,不过已超出了本文的讨论范围。 最后,咱们来看看如下的两种特殊状况该如何使用WinDbg进行调试分析: 第一种状况是系统挂起,也就是“死机”、“系统没有响应”,在这种状况下,系统是根本没法自动生成内存转储文件的,并且您也不可能操做本地软件来查明是什么挂起了系统,这个时候咱们须要手动让系统崩溃,以生成内存转储文件。具体作法为,在系统挂起以前,打开注册表编辑器并定位至 HKEY_LOCAL_MACHINE \System\CurrentControlSet\Services\i8042prt\Parameters ,在该项下面创建一个名为 CrashOnCtrlScroll 的DWORD类型键值(注意大小写),并将其设置为1,而后从新启动应用此更改。一旦系统挂起,就能够经过按住右边Ctrl键的同时击ScrollLock键两次来生成一个中止代码为0x000000E2(MANUALLY_INITIATED_CRASH)的手动崩溃。获得内存转储文件之后按照上面的方法分析。注意,此方法对插入USB口的USB键盘无效。(笔记本计算机键盘不少都是经过PS/2接口链接的,所以有效) 第二种状况是进不了系统就自动崩溃,没法提取出内存转储文件。这种情形以及当有特定的须要时,咱们均可以采起双机调试的方法。咱们将发生崩溃的机器称为“目标机”,将用来链接到“目标机”进行调试的机器称为“调试主机”,调试主机必须安装有WinDbg。 首先,咱们须要在两台机器间创建链接,在新版的WinDbg中,这里一共有三种方式链接到目标机。第一种方式为经过COM端口链接,使用零调制解调器线缆(Null-Modem),也就是COM对接线——两个头都是孔的RS232线;第二种是利用IEEE 1394线缆链接,可是这种链接要求两台机器运行相同版本的至少为Windows XP的系统;第三种方式是使用特制的USB 2.0调试线缆链接,这不是普通的USB链接线,是一种内置硬件芯片来支持调试的线缆,并且这种方式要求目标机运行的系统至少为Windows Vista。使用这三种链接方式进行双机调试都须要在目标机上做出相应的设置调整,具体参见WinDbg帮助文件,这里仅讨论第一种链接方式的设置,由于这是XP及以上系统默认支持的最简单的方式。此时咱们假设已经使用COM线缆链接好了两台机器。 其次,在调试主机上启动WinDbg,配制好符号文件以后,咱们展开“File”菜单,选择“Kernal Debug…”,这将会打开以下的“Kernal Debugging”对话框: 默认打开的就是COM链接方式的配置页面。这里的“Baud Rate(传输速率)”以及“Port(端口)”须要根据下一个步骤的操做方式来配置。 最后一步,咱们能够启动目标机,在引导Windows以前按下F8,在启动菜单中选择“调试模式”,这样,传输速率被系统默认设为19200,端口也默认被设为COM2,所以上一步骤中应该照此设置后点击“OK”。关于XP修改Boot.ini、Vista修改Bootcfg的方式启用指定端口、传输速率的调试,请参见WinDbg帮助文件,在此再也不赘述。目标机一块儿动Windows,位于调试主机的WinDbg就可以有信息的显示,而后按照本文介绍的方法进行调试。另外,对于上面提到的系统挂起的状况,也能够采用这种双机调试,而且有新的命令 .crash 强迫目标机在它的本地硬盘驱动器中生成一个崩溃转储,当系统从新引导之后就能够提取此转储,固然,也可使用 .dump /m COM.dmp 命令,在调试主机WinDbg所在目录下生成一个名叫“COM.dmp”的小内存转储文件(命令中的文件名能够改为其它的)。 其余 电脑速度反应很卡,打开任务管理器发现里面有很多可疑进程。 浏览器主页被锁定为某个网址导航站,并且还没法手动删除 桌面上建立若干个流氓垃圾图标,而且常常会弹出一些中奖、×××之类的钓鱼欺诈网站 网游玩家还会发现多个主流游戏账号(针对的游戏有《天龙八部》、《剑网3》、《QQ地下城与勇士》、《穿越火线》《魔兽世界》等)等被盗。 编辑本段小技巧 1。按期对重要的注册表文件进行手工备份,避免系统出错后,未能及时替换成备份文件而产生不可挽回的错误。 2。尽可能避免非正常关机,减小重要文件的丢失。如.VxD .DLL文件等,硬盘出现损伤或系统引导文件丢失。 3。对普通用户而言,只要能正常运行,没有必要去升级显卡、主板的BIOS和驱动程序,避免升级形成的危害。 4。按期检查优化系统文件,运行“系统文件检查器”进行文件丢失检查及版本校对。检查步骤参见前面相关介绍。 5。减小无用软件的安装,尽可能不用手工卸载或删除程序,以减小非法替换文件和文件指向错误的出现。 6。若是不是内存特别大和其管理程序很是优秀,尽可能避免大程序的同时运行,若是你发如今听MP3时有沙沙拉拉的声音,基本能够断定该故障是由内存不足而形成的。 7。按期用杀毒软件进行全盘扫描,清除病毒。 8 。不上一些不熟悉的网站,对于一些网站上的带有诱惑性的图片和一些中奖的消息,不要点击。 9 。按期升级操做系统,软件和驱动。 警戒温柔杀手致使“电脑蓝屏” “温柔杀手”病毒首先在系统中释放病毒执行程序C:\WINDOWS\system32\kb.dll,而后再感染若干个系统关键文件,好比"explorer.exe","winlogon.exe"。而且,由于温柔杀手病毒还会下载更多盗号***,致使系统被大量病毒***破坏,使得针对“温柔杀手”病毒的修复变得较为复杂。若被某些杀毒软件不当处置,则会出现电脑开机蓝屏。