代码 含意
0 0x00000000 作业完成。
1 0x00000001 不正确的函数。
2 0x00000002 系统找不到指定的档案。
3 0x00000003 系统找不到指定的路径。
4 0x00000004 系统无法开启档案。
5 0x00000005 拒绝存取。
6 0x00000006 无效的代码。
7 0x00000007 储存体控制区块已毁。
8 0x00000008 储存体空间不足,无法处理这个指令。
9 0x00000009 储存体控制区块地址无效。
10 0x0000000A 环境不正确。
11 0x0000000B 尝试加载一个格式错误的程序。
12 0x0000000C 存取码错误。
13 0x0000000D 资料错误。
14 0x0000000E 储存体空间不够,无法完成这项作业。
15 0x0000000F 系统找不到指定的磁盘驱动器。
16 0x00000010 无法移除目录。
16 0x00000010 无法移除目录。
17 0x00000011 系统无法将档案移到 其它的磁盘驱动器。
18 0x00000012 没有任何档案。
19 0x00000013 储存媒体为写保护状态。
20 0x00000014 系统找不到指定的装置。
21 0x00000015 装置尚未就绪。
22 0x00000016 装置无法识别指令。
23 0x00000017 资料错误 (cyclic redundancy check)
24 0x00000018 程序发出一个长度错误的指令。
25 0x00000019 磁盘驱动器在磁盘找不到 持定的扇区或磁道。
26 0x0000001A 指定的磁盘或磁盘无法存取。
27 0x0000001B 磁盘驱动器找不到要求的扇区。
28 0x0000001C 打印机没有纸。
29 0x0000001D 系统无法将资料写入指定的磁盘驱动器。
30 0x0000001E 系统无法读取指定的装置。
31 0x0000001F 连接到系统的某个装置没有作用。
32 0x00000020 文件被另一进程使用中不能访问The process cannot access the file because it is being used by another process.
33 0x00000021 档案的一部份被锁定, 现在无法存取。
34 0x00000022 磁盘驱动器的磁盘不正确。 请将 %2 (Volume Serial Number: %3) 插入磁盘机%1。
36 0x00000024 开启的分享档案数量太多。
38 0x00000026 到达档案结尾。
39 0x00000027 磁盘已满。
50 0x00000032 不支持这种网络要求。
51 0x00000033 远程计算机无法使用。
52 0x00000034 网络名称重复。
53 0x00000035 网络路径找不到。
54 0x00000036 网络忙碌中。
55 0x00000037 特殊的网络资源或设备不可再使用The specified network resource or device is no longer available.
56 0x00000038 网络BIOS命令已达到限制The network BIOS command limit has been reached.
57 0x00000039 网络配接卡发生问题。
58 0x0000003A 指定的服务器无法执行要求的作业。
59 0x0000003B 网络发生意外错误。
60 0x0000003C 远程配接卡不兼容。
61 0x0000003D 打印机队列已满。
62 0x0000003E 服务器的空间无法储存等候打印的档案。
63 0x0000003F 等候打印的档案已经删除。
64 0x00000040 指定的网络名称无法使用。
65 0x00000041 拒绝存取网络。
65 0x00000041 拒绝存取网络。
66 0x00000042 网络资源类型错误。
67 0x00000043 网络名称找不到。
68 0x00000044 超过区域计算机网络配接卡的名称限制。
69 0x00000045 超过网络 BIOS 作业阶段的限制。
70 0x00000046 远程服务器已经暂停或者正在起始中。
71 0x00000047 由于联机数目已达上限,此时无法再联机到这台远程计算机。
72 0x00000048 指定的打印机或磁盘装置已经暂停作用。
80 0x00000050 档案已经存在。
82 0x00000052 无法建立目录或档案。
83 0x00000053 INT 2484 0x00000054 处理这项要求的储存体无法使用。
85 0x00000055 近端装置名称已经在使用中。
86 0x00000056 指定的网络密码错误。
87 0x00000057 参数错误。
88 0x00000058 网络发生资料写入错误。
89 0x00000059 此时系统无法执行其它行程。
100 0x00000064 无法建立其它的系统 semaphore。
101 0x00000065 属于其它行程专用的 semaphore.
102 0x00000066 semaphore 已经设定,而且无法关闭。
103 0x00000067 无法指定 semaphore 。
104 0x00000068 在岔断时间无法要求专用的 semaphore 。
104 0x00000068 在岔断时间无法要求专用的 semaphore 。
105 0x00000069 此 semaphore 先前的拥有权已经结束。
106 0x0000006A 请将磁盘插入 %1。
107 0x0000006B 因为代用的磁盘尚未插入,所以程序已经停止。
108 0x0000006C 磁盘正在使用中或被锁定。
109 0x0000006D Pipe 已经中止。
110 0x0000006E 系统无法开启指定的 装置或档案。
111 0x0000006F 档名太长。
112 0x00000070 磁盘空间不足。
113 0x00000071 没有可用的内部档案标识符。
114 0x00000072 目标内部档案标识符不正确。
117 0x00000075 由应用程序所执行的 IOCTL 呼叫 不正确。
118 0x00000076 写入验证参数值不正确。
119 0x00000077 系统不支持所要求的指令。
120 0x00000078 此项功能仅在 Win32 模式有效。
121 0x00000079 semaphore 超过逾时期间。
122 0x0000007A 传到系统呼叫的资料区域 太小。
123 0x0000007B 文件名、目录名称或储存体卷标语法错误。
124 0x0000007C 系统呼叫层次不正确。
125 0x0000007D 磁盘没有设定卷标。
126 0x0000007E 找不到指定的模块。
127 0x0000007F 找不到指定的程序。
128 0x00000080 没有子行程可供等待。
128 0x00000080 没有子行程可供等待。
129 0x00000081 %1 这个应用程序无法在 Win32 模式下执行。
130 0x00000082 Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O.
131 0x00000083 尝试将档案指针移至档案开头之前。
132 0x00000084 无法在指定的装置或档案,设定档案指针。
133 0x00000085 JOIN 或 SUBST 指令 无法用于 内含事先结合过的磁盘驱动器。
134 0x00000086 尝试在已经结合的磁盘驱动器,使用 JOIN 或 SUBST 指令。
135 0x00000087 尝试在已经替换的磁盘驱动器,使 用 JOIN 或 SUBST 指令。
136 0x00000088 系统尝试删除 未连结过的磁盘驱动器的连结关系。
138 0x0000008A 系统尝试将磁盘驱动器结合到已经结合过之磁盘驱动器的目录。
139 0x0000008B 系统尝试将磁盘驱动器替换成已经替换过之磁盘驱动器的目录。
140 0x0000008C 系统尝试将磁盘驱动器替换成已经替换过之磁盘驱动器的目录。
141 0x000000 系统尝试将磁盘驱动器 SUBST 成已结合的磁盘驱动器 目录。
142 0x0000008E 系统此刻无法执行 JOIN 或 SUBST。
143 0x0000008F 系统无法将磁盘驱动器结合或替换同一磁盘驱动器下目录。
144 0x00000090 这个目录不是根目录的子目录。
145 0x00000091 目录仍有资料。
146 0x00000092 指定的路径已经被替换过。
147 0x00000093 资源不足,无法处理这项 指令。
148 0x00000094 指定的路径这时候无法使用。
148 0x00000094 指定的路径这时候无法使用。
149 0x00000095 尝试要结合或替换的磁盘驱动器目录,是已经替换过的的目标。
150 0x00000096 CONFIG.SYS 文件未指定系统追踪信息,或是追踪功能被取消。
151 0x00000097 指定的 semaphore事件 DosMux0000SemWait 数目不正确。
152 0x00000098 DosMux0000SemWait 没有执行;设定太多的 semaphore。
153 0x00000099 DosMux0000SemWait 清单不正确。
154 0x0000009A 您所输入的储存媒体标 元长度限制。
155 0x0000009B 无法建立其它的执行绪。
156 0x0000009C 接收行程拒绝接受信号。
157 0x0000009D 区段已经被舍弃,无法被锁定。
158 0x0000009E 区段已经解除锁定。
159 0x0000009F 执行绪识别码的地址不正确。
160 0x000000A0 传到 DosEx0000ecPgm 的自变量字符串不正确。
161 0x000000A1 指定的路径不正确。
162 0x000000A2 信号等候处理。
164 0x000000A4 系统无法建立执行绪。
167 0x000000A7 无法锁定档案的部份范围。
170 0x000000AA 所要求的资源正在使用中。
173 0x000000AD 取消范围的锁定要求不明显。
174 0x000000AE 档案系统不支持自动变更锁定类型。
180 0x000000B4 系统发现不正确的区段号码。
182 0x000000B6 操作系统无法执行 %1。
182 0x000000B6 操作系统无法执行 %1。
183 0x000000B7 档案已存在,无法建立同一档案。
186 0x000000BA 传送的旗号错误。
187 0x000000BB 指定的系统旗号找不到。
188 0x000000BC 操作系统无法执行 %1。
189 0x000000BD 操作系统无法执行 %1。
190 0x000000BE 操作系统无法执行 %1。
191 0x000000BF 无法在 Win32 模式下执行 %1。
192 0x000000C0 操作系统无法执行 %1。
193 0x000000C1 %1 不是正确的 Win32 应用程序。
194 0x000000C2 操作系统无法执行 %1。
195 0x000000C3 操作系统无法执行 %1。
196 0x000000C4 操作系统无法执行 这个应用程序。
197 0x000000C5 操作系统目前无法执行 这个应用程序。
198 0x000000C6 操作系统无法执行 %1。
199 0x000000C7 操作系统无法执行 这个应用程序。
200 0x000000C8 程序代码的区段不可以大于或等于 64KB。
201 0x000000C9 操作系统无法执行 %1。
202 0x000000CA 操作系统无法执行 %1。
203 0x000000CB 系统找不到输入的环境选项。\r
205 0x000000CD 在指令子目录下,没有任何行程有信号副处理程序。
206 0x000000CE 文件名称或扩展名太长。
207 0x000000CF ring 2 堆栈使用中。
207 0x000000CF ring 2 堆栈使用中。
208 0x000000D0 输入的通用档名字元 * 或 ? 不正确, 或指定太多的通用档名字元。
209 0x000000D1 所传送的信号不正确。
210 0x000000D2 无法设定信号处理程序。
212 0x000000D4 区段被锁定,而且无法重新配置。
214 0x000000D6 附加到此程序或动态连结模块的动态连结模块太多。
215 0x000000D7 Can’t nest calls to LoadModule.
230 0x000000E6 The pipe state is invalid.
231 0x000000E7 所有的 pipe instances 都在忙碌中。
232 0x000000E8 The pipe is being closed.
233 0x000000E9 No process is on the other end of the pipe.
234 0x000000EA 有更多可用的资料。
240 0x000000F0 作业阶段被取消。
254 0x000000FE 指定的延伸属性名称无效。
255 0x000000FF 延伸的属性不一致。
259 0x00000103 没有可用的资料。
266 0x0000010A 无法使用 Copy API。
267 0x0000010B 目录名称错误。
275 0x00000113 延伸属性不适用于缓冲区。
276 0x00000114 在外挂的档案系统上的延伸属性档案已经毁损。
277 0x00000115 延伸属性表格文件满。
278 0x00000116 指定的延伸属性代码无效。
278 0x00000116 指定的延伸属性代码无效。
282 0x0000011A 外挂的这个档案系统不支持延伸属性。
288 0x00000120 意图释放不属于叫用者的 mutex0000。
298 0x0000012A semaphore 传送次数过多。
299 0x0000012B 只完成 Read/WriteProcessMemory 的部份要求。
317 0x0000013D 系统找不到位于讯息文件 %2 中编号为 0x0000%1 的讯息。
487 0x000001E7 尝试存取无效的地址。
534 0x00000216 运算结果超过 32 位。
535 0x00000217 信道的另一端有一个行程在接送资料。
536 0x00000218 等候行程来开启信道的另一端。
994 0x000003E2 存取延伸的属性被拒。
995 0x000003E3 由于执行绪结束或应用程序要求,而异常终止 I/O 作业。
996 0x000003E4 重叠的 I/O 事件不是设定成通知状态。
997 0x000003E5 正在处理重叠的 I/O 作业。
998 0x000003E6 对内存位置的无效存取。
999 0x000003E7 执行 inpage 作业发生错误。
1001 0x000003E9 递归太深,堆栈满溢。
1002 0x000003EA 窗口无法用来传送讯息。
1003 0x000003EB 无法完成这项功能。
1004 0x000003EC 旗号无效。
1005 0x000003ED 储存媒体未含任何可辨识的档案系统。 请确定以加载所需的系统驱动程序,而且该储存媒体并未毁损。
1006 0x000003EE 储存该档案的外部媒体发出警告,表示该已开启档案已经无效。
1007 0x000003EF 所要求的作业无法在全屏幕模式下执行。
1008 0x000003F0 An attempt was made to reference a token that does not ex0000ist.
1009 0x000003F1 组态系统登录数据库毁损。
1010 0x000003F2 组态系统登录机码无效。
1011 0x000003F3 无法开启组态系统登录机码。
1012 0x000003F4 无法读取组态系统登录机码。
1013 0x000003F5 无法写入组态系统登录机码。
1014 0x000003F6 系统登录数据库中的一个档案必须使用记录或其它备份还原。 已经还原成功。
1015 0x000003F7 系统登录毁损。其中某个档案毁损、或者该档案的 系统映对内存内容毁损、会是档案无法复原。
1016 0x000003F8 系统登录起始的 I/O 作业发生无法复原的错误。 系统登录无法读入、写出或更新,其中的一个档案 内含系统登录在内存中的内容。
1017 0x000003F9 系统尝试将档案加载系统登录或将档案还原到系统登录中,但是,指定档案的格式不是系统登录文件的格式。
1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。
1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。
1019 0x000003FB 系统无法配置系统登录记录所需的空间。
1020 0x000003FC 无法在已经有子机码或数值的系统登录机码建立符号连结。
1021 0x000003FD 无法在临时机码下建立永久的子机码。
1022 0x000003FE 变更要求的通知完成,但信息 并未透过呼叫者的缓冲区传回。呼叫者现在需要自行列举档案,找出变更的地方。
1051 0x0000041B 停止控制已经传送给其它服务 所依峙的一个服务。
1052 0x0000041C 要求的控制对此服务无效
1016 0x000003F8 系统登录起始的 I/O 作业发生无法复原的错误。 系统登录无法读入、写出或更新,其中的一个档案 内含系统登录在内存中的内容。
1017 0x000003F9 系统尝试将档案加载系统登录或将档案还原到系统登录中,但是,指定档案的格式不是系统登录文件的格式。
1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。
1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。
1019 0x000003FB 系统无法配置系统登录记录所需的空间。
1020 0x000003FC 无法在已经有子机码或数值的系统登录机码建立符号连结。
1021 0x000003FD 无法在临时机码下建立永久的子机码。
1022 0x000003FE 变更要求的通知完成,但信息 并未透过呼叫者的缓冲区传回。呼叫者现在需要自行列举档案,找出变更的地方。
1051 0x0000041B 停止控制已经传送给其它服务 所依峙的一个服务。
1052 0x0000041C 要求的控制对此服务无效
1052 0x0000041C 要求的控制对此服务无效
1053 0x0000041D The service did not respond to the start or control request in a timely fashion. 1054 0x0000041E 无法建立服务的执行绪。
1055 0x0000041F 服务数据库被锁定。
1056 0x00000420 这种服务已经在执行。
1057 0x00000421 帐户名称错误或者不存在。
1058 0x00000422 指定的服务暂停作用,无法激活。
1059 0x00000423 指定循环服务从属关系。
1060 0x00000424 指定的服务不是安装进来的服务。
1061 0x00000425 该服务项目此时无法接收控制讯息。
1062 0x00000426 服务尚未激活。
1063 0x00000427 无法联机到服务控制程序。
1064 0x00000428 处理控制要求时,发生意外状况。
1065 0x00000429 指定的数据库不存在。
1066 0x0000042A 服务传回专属于服务的错误码。
1067 0x0000042B The process terminated unex0000pectedly.
1068 0x0000042C 从属服务或群组无法激活。
1069 0x0000042D 因为登入失败,所以没有激活服务。
1070 0x0000042E 在激活之后,服务在激活状态时当机。
1071 0x0000042F 指定服务数据库锁定无效。
1072 0x00000430 指定的服务已经标示为删除。
1073 0x00000431 指定的服务已经存在。
1074 0x00000432 系统目前正以上一次执行成功的组态执行。
1075 0x00000433 从属服务不存在,或已经标示为删除。
1076 0x00000434 目前的激活已经接受上一次执行成功的 控制设定。
1077 0x00000435 上一次激活之后,就没有再激活服务。
1078 0x00000436 指定的名称已经用于服务名称或服务显示 名称。
1100 0x0000044C 已经到了磁带的最后。
1101 0x0000044D 到了档案标示。
1102 0x0000044E 遇到磁带的开头或分割区。
1100 0x0000044C 已经到了磁带的最后。
1101 0x0000044D 到了档案标示。
1102 0x0000044E 遇到磁带的开头或分割区。
1103 0x0000044F 到了档案组的结尾。
1104 0x00000450 磁带没有任何资料。
1105 0x00000451 磁带无法制作分割区。
1106 0x00000452 存取多重容体的新磁带时,发现目前 区块大小错误。
1107 0x00000453 加载磁带时,找不到磁带分割区信息。
1108 0x00000454 无法锁住储存媒体退带功能。
1108 0x00000454 无法锁住储存媒体退带功能。
1109 0x00000455 无法解除加载储存媒体。
1110 0x00000456 磁盘驱动器中的储存媒体已经变更。
1111 0x00000457 已经重设 I/O 总线。
1112 0x00000458 磁盘驱动器没有任何储存媒体。
1113 0x00000459 目标 multi-byte code page,没有对应 Unicode 字符。
1114 0x0000045A 动态链接库 (DLL) 起始例程失败。
1115 0x0000045B 系统正在关机。
1116 0x0000045C 无法中止系统关机,因为没有关机的动作在进行中。
1117 0x0000045D 因为 I/O 装置发生错误,所以无法执行要求。
1118 0x0000045E 序列装置起始失败,会取消加载序列驱动程序。
1119 0x0000045F 无法开启装置。这个装置与其它装置共享岔断要求 (IRQ)。至少已经有一个使用同一IRQ 的其它装置已经开启。
1120 0x00000460 A serial I/O operation was completed by another write to the serial port(The IOCTL_SERIAL_x0000OFF_COUNTER reached zero.)
1121 0x00000461 因为已经过了逾时时间,所以序列 I/O 作业完成。
(IOCTL_SERIAL_x0000OFF_COUNTER 不是零。)
1122 0x00000462 在磁盘找不到任何的 ID 地址标示。
1123 0x00000463 磁盘扇区 ID 字段与磁盘控制卡追踪地址 不符。
1124 0x00000464 软式磁盘驱动器控制卡回报了一个软式磁盘驱动器驱动程序无法识别的错误。
1125 0x00000465 软式磁盘驱动器控制卡传回与缓存器中不一致的结果。
1126 0x00000466 存取硬盘失败,重试后也无法作业。
1127 0x00000467 存取硬盘失败,重试后也无法作业。
1128 0x00000468 存取硬盘时,必须重设磁盘控制卡,但是 连重设的动作也失败。
1129 0x00000469 到了磁带的最后。
1130 0x0000046A 可用服务器储存空间不足,无法处理这项指令。
1131 0x0000046B 发现潜在的死锁条件。
1132 0x0000046C 指定的基本地址或档案位移没有适当 对齐。
1140 0x00000474 尝试变更系统电源状态,但其它的应用程序或驱动程序拒绝。
1141 0x00000475 系统 BIOS 无法变更系统电源状态。
1150 0x0000047E 指定的程序需要新的 Windows 版本。
1151 0x0000047F 指定的程序不是 Windows 或 MS-DOS 程序。
1152 0x00000480 指定的程序已经激活,无法再激活一次。
1153 0x00000481 指定的程序是为旧版的 Windows 所写的。
1154 0x00000482 执行此应用程序所需的链接库档案之一毁损。
1155 0x00000483 没有应用程序与此项作业的指定档案建立关联。
1156 0x00000484 传送指令到应用程序发生错误。
1157 0x00000485 找不到执行此应用程序所需的链接库档案。
1200 0x000004B0 指定的装置名称无效。
1201 0x000004B1 装置现在虽然未联机,但是它是一个记忆联机。
1202 0x000004B2 尝试记忆已经记住的装置。
1203 0x000004B3 提供的网络路径找不到任何网络提供程序。
1203 0x000004B3 提供的网络路径找不到任何网络提供程序。
1204 0x000004B4 指定的网络提供程序名称错误。
1205 0x000004B5 无法开启网络联机设定文件。
1206 0x000004B6 网络联机设定文件坏掉。
1207 0x000004B7 无法列举非容器。
1208 0x000004B8 发生延伸的错误。
1209 0x000004B9 指定的群组名称错误。
1210 0x000004BA 指定的计算机名称错误。
1211 0x000004BB 指定的事件名称错误。
1212 0x000004BC 指定的网络名称错误。
1213 0x000004BD 指定的服务名称错误。
1214 0x000004BE 指定的网络名称错误。
1215 0x000004BF 指定的资源共享名称错误。
1216 0x000004C0 指定的密码错误。
1217 0x000004C1 指定的讯息名称错误。
1218 0x000004C2 指定的讯息目的地错误。
1219 0x000004C3 所提供的条件与现有的条件组发生冲突。
1220 0x000004C4 尝试与网络服务器联机,但是 与该服务器的联机已经太多。
1221 0x000004C5 其它网络计算机已经在使用这个工作群组或网域名称。
Windows 2K/XP蓝屏信息非常多, 无法在一篇文章中全面讲解, 但他们产生的原因往往集中在不兼容的硬件和驱动程序、有问题的软件、病毒等, 因此首先为大家提供了一些常规的解决方案, 在遇到蓝屏错误时, 应先对照这些方案进行排除.
重启
有时只是某个程序或驱动程序一时犯错, 重启后他们会改过自新.(注意:此时参见7.查询停机码)
新硬件
首先, 应该检查新硬件是否插牢, 这个被许多人忽视的问题往往会引发许多莫名其妙的故障. 如果确认没有问题, 将其拔下, 然后换个插槽试试, 并安装最新的驱动程序. 同时还应对照微软网站的硬件兼容类别检查一下硬件是否与操作系统兼容. 如果你的硬件没有在表中, 那么就得到硬件厂商网站进行查询, 或者拨打他们的咨询电话.
新驱动和新服务
如果刚安装完某个硬件的新驱动, 或安装了某个软件, 而它又在系统服务中添加了相应项目(比如:杀毒软件、CPU降温软件、防火墙软件等), 在重启或使用中出现了蓝屏故障, 请到安全模式来卸载或禁用它们.
检查病毒
比如冲击波和振荡波等病毒有时会导致Windows蓝屏死机, 因此查杀病毒必不可少. 同时一些木马间谍软件也会引发蓝屏, 所以最好再用相关工具进行扫描检查.
检查BIOS和硬件兼容性
对于新装的电脑经常出现蓝屏问题, 应该检查并升级BIOS到最新版本, 同时关闭其中的内存相关项, 比如:缓存和映射. 另外 还应该对照微软的硬件兼容列表检查自己的硬件. 还有就是, 如果主板BIOS无法支持大容量硬盘也会导致蓝屏, 需要对其进行升级.
、运行“sfc /scannow”来检查系统文件是否被替换,然后用系统安装盘来恢复.
小提示:
的缓存和映射项
视频BIOS映射)
映射地址列)
系统BIOS缓冲)
视频BIOS缓冲)
视频内存缓冲)
检查系统日志
在开始-->菜单中输入:EventVwr.msc, 回车出现"事件查看器", 注意检查其中的"系统日志"和"应用程序日志"中表明"错误"的项.
查询停机码
把蓝屏中密密麻麻的E文记下来, 接着到其他电脑中上网, 进入微软帮助与支持网站,在左上角的"搜索(知识库)"中输入停机码, 如果搜索结果没有适合信息, 可以选择"英文知识库"在搜索一遍. 一般情况下, 会在这里找到有用的解决案例. 另外, 在baidu、Google等搜索引擎中使用蓝屏的停机码或者后面的说明文字为关键词搜索, 往往也会有收获.
最后一次正确配置
一般情况下, 蓝屏都是在硬件驱动或新加硬件并安装驱动后, 这时Windows 2K/XP提供的"最后一次正确配置"就是解决蓝屏的快捷方式. 重启系统, 在出现启动菜单时按下F8键就会出现高级启动选项菜单, 接着选择"最后一次正确配置".
安装最新的系统补丁和Service Pack
有些蓝屏是Windows本身存在缺陷造成的, 应此可通过安装最新的系统补丁和Service Pack来解决.
蓝屏代码含义和解决方案
使用windows出现蓝色屏幕是经常的事,而且每每因为不清楚错误的来源而频繁重新安装系统,劳神费时。下列收集了一些windows死机密码,供大家参考。
、0x0000000A:IRQL_NOT_LESS_OR_EQUAL
错误分析:主要是由问题的驱动程序、有缺陷或不兼容的硬件与软件造成的. 从技术角度讲. 表明在内核模式中有级别进程请求(IRQL)访问其没有权限访问的内存地址.
解决方案:请用前面介绍的解决方案中的2、3、5、8、9方案尝试排除.
、0x00000012:TRAP_CAUSE_UNKNOWN
错误分析:如果遇到这个错误信息, 那么很不幸, 应为KeBudCheck分析的结果是错误原因
未知.
解决方案:既然微软都帮不上忙, 就得靠自己了, 请仔细回想这个错误是什么时候出现的; 第一次发生时你对系统做了哪些操作; 发生时正在进行什么操作. 从这些信息中找出可能的原因, 从而选择相应解决方案尝试排除.
、0x0000001A:MEMORY_MANAGEMENT
错误分析:这个内存管理错误往往是由硬件引起的, 比如: 新安装的硬件、内存本身有问题等.
解决方案:如果是在安装Windows时出现, 有可能是由于你的电脑达不到安装Windows的最小内存和磁盘要求.
、0x0000001E:KMODE_EXCEPTION_NOT_HANDLED
错误分析:Windows内核检查到一个非法或者未知的进程指令,这个停机码一般是由问题的内存或是与前面0x0000000A相似的原因造成的.
解决方案:
硬件兼容有问题:请对照前面提到的最新硬件兼容性列表, 查看所有硬件是否包含在该列表中.
有问题的设备驱动、系统服务或内存冲突和中断冲突: 如果在蓝屏信息中出现了驱动程序的名字, 请试着在安装模式或者故障恢复控制台中禁用或删除驱动程序, 并禁用所有刚安装的驱动和软件. 如果错误出现在系统启动过程中, 请进入安全模式, 将蓝屏信息中所标明的文件重命名或者删除.
如果错误信息中明确指出Win32K.sys: 很有可能是第三方远程控制软件造成的, 需要从故障恢复控制台中将对该软件的服务关闭.
在安装Windows后第一次重启时出现:最大嫌疑可能时系统分区的磁盘空间不足或BIOS兼容有问题.
如果是在关闭某个软件时出现的:很有可能时软件本生存在设计缺陷, 请升级或卸载它.
、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
错误分析:系统内存存储器奇偶校验产生错误, 通常是因为有缺陷的内存(包括物理内存、二级缓存或者显卡显存)时设备驱动程序访问不存在的内存地址等原因引起的. 另外, 硬盘被病毒或者其他问题所损伤, 以出现这个停机码.
解决方案:
检查病毒
使用"chkdsk /r"命令检查所有磁盘分区.
用Memtest86等内存测试软件检查内存.
检查硬件是否正确安装, 比如:是否牢固、金手指是否有污渍.
、0x00000035:NO_MORE_IRP_STACK_LOCATIONS
错误分析:从字面上理解, 应该时驱动程序或某些软件出现堆栈问题. 其实这个故障的真正原因应该时驱动程序本生存在问题, 或是内存有质量问题.
解决方案:请使用前面介绍的常规解决方案中与驱动程序和内存相关的方案进行排除.
、0x0000003F:NO_MORE_SYSTEM_PTES
错误分析:一个与系统内存管理相关的错误, 比如:由于执行了大量的输入/输出操作, 造成内存管理出现问题: 有缺陷的驱动程序不正确地使用内存资源; 某个应用程序(比如:备份软件)被分配了大量的内核内存等.
解决方案:卸载所有最新安装的软件(特别是哪些增强磁盘性能的应用程序和杀毒软件)和驱动程序.
、0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS
错误分析:通常是由硬件驱动程序引起的.
解决方案:卸载最近安装的驱动程序. 这个故障很少出现, 目前已经知道的是, 在使用 www.in-system.com/这家公司的某些软件时会出现, 其中的罪魁就是Falstaff.sys文件.(作者难道不怕吃官司嘛, 把公司网址公布)
、0x00000050: PAGE_FAULT_IN_NONPAGED+AREA
错误分析:有问题的内存(包括物理内存、二级缓存、显存)、不兼容的软件(主要是远程控制和杀毒软件)、损坏的NTFS卷以及有问题的硬件(比如: PCI插卡本身已损坏)等都会引发这个错误.
解决方案:请使用前面介绍的常规解决方案中与内存、软件、硬件、硬盘等相关的方案进行排除.
、0x00000051:REGISTRY_ERROR
错误分析:这个停机码说明注册表或系统配置管理器出现错误, 由于硬盘本身有物理损坏或文件系统存在问题, 从而造成在读取注册文件时出现输入/输出错误.
解决方案:使用"chkdsk /r"检查并修复磁盘错误.
、0x00000058:FTDISK_INTERNAL_ERROR
错误分析:说明在容错集的主驱动发生错误. ?
解决方案:首先尝试重启电脑看是否能解决问题, 如果不行, 则尝试"最后一次正确配置"进行解决.
、0x0000005E:CRITICAL_SERVICE_FAILED
错误分析:某个非常重要的系统服务启动识别造成的.
解决方案:如果是在安装了某个新硬件后出新的, 可以先移除该硬件, 并通过网上列表检查它是否与Windows 2K/XP兼容, 接着启动电脑, 如果蓝屏还是出现, 请使用"最后一次正确配置"来启动Windows, 如果这样还是失败, 建议进行修复安装或是重装.
、0x0000006F:SESSION3_INITIALIZATION-FAILED
错误分析:这个错误通常出现在Windows启动时, 一般是由有问题的驱动程序或损坏的系统文件引起的.
解决方案:建议使用Windows安装光盘对系统进行修复安装.
、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".
、0x00000077:KERNEL_STACK_INPAGE_ERROR
错误分析:说明需要使用的内核数据没有在虚拟内存或物理内存中找到. 这个错误常常是磁盘有问题, 相应数据损坏或受到病毒侵蚀.
解决方案:使用杀毒软件扫描系统; 使用"chkdsk /r"命令检查并修复磁盘错误, 如不行则使用磁盘厂商提供的工具检查修复.
、0x0000007A:KERNEL_DATA_INPAGE_ERROR
错误分析:这个错误往往是虚拟内存中的内核数据无法读入内存造成的. 原因可能是虚拟内存页面文件中存在坏簇病毒、磁盘控制器出错、内存有问题.
解决方案:首先用升级为最新病毒库杀毒软件查杀病毒, 如果信息中还有0xC000009C或0xC000016A代码, 那么表示是坏簇造成的, 并且系统的磁盘检测工具无法自动修复, 这时要进入"故障恢复控制台", 用"chkdsk /r"命令进行手动修复.
、0x0000007B:INACESSIBLE_BOOT_DEVICE
错误分析:Windows在启动过程中无法访问系统分区或启动卷. 一般发生在更换主板后第一次启动时, 主要是因为新主板和旧主板的IDE控制器使用了不同芯片组造成的. 有时也可能是病毒或硬盘损伤所引起的.
解决方案:一般只要用安装光盘启动电脑, 然后执行修复安装即可解决问题. 对于病毒则可使用DOS版的杀毒软件进行查杀(有kv2005DOS版下载). 如果是硬盘本身存在问题, 请将其安装到其他电脑中, 然后使用"chkdsk /r"来检查并修复磁盘错误.
、0x0000007E:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
错误分析:系统进程产生错误, 但Windows错误处理器无法捕获. 其产生原因很多, 包括:硬件兼容性、有问题的驱动程序或系统服务、 或者是某些软件.
解决方案:请使用"事件查看器"来获取更多的信息, 从中发现错误根源.(发现好像不是解决哦, 看来这里大家要自力更生了!)
、0x0000007F:UNEXPECTED_KERNEL_MOED_TRAP
错误分析:一般是由于有问题的硬件(比如:内存)或某些软件引起的. 有时超频也会产生这个错误.
解决方案:用检测软件(比如:Memtest86)检查内存, 如果进行了超频, 请取消超频. 将PCI硬件插卡从主板插槽拔下来, 或更换插槽. 另外, 有些主板(比如:nForce2主板)在进行超频后, 南桥芯片过热也会导致蓝屏, 此时为该芯片单独增加散热片往往可以有效解决问题.
、0x00000080:NMI_HARDWARE_FAILURE
错误分析:通常是有硬件引起的.(似乎蓝屏与硬件错误有不解之缘)
解决方案:如果最近安装了新硬件, 请将其移除, 然后试试更换插槽和安装最新的驱动程序, 如果升级了驱动程序, 请恢复后原来的版本; 检查内存金手指是否有污染和损坏; 扫描病毒; 运行"chkdsk /r"检查并修复磁盘错误; 检查所有硬件插卡已经插牢. 如果以上尝试都无效果, 就得找专业的电脑维修公司请求帮助了.
、0x0000008E:KERNEL_MODE_EXCEPTION_NOT_HANDLED
错误分析:内核级应用程序产生了错误, 但Windows错误处理器没有捕获. 通常是硬件兼容性错误.
解决方案:升级驱动程序或升级BIOS.
、0x0000009C:MACHINE_CHECK_EXCEPTION
错误分析:通常是硬件引起的. 一般是因为超频或是硬件存在问题(内存、CPU、总线、电
源).
解决方案:如果进行了超频, 请降下CPU原来频率, 检查硬件.
、0x0000009FRIVER_POWER_STATE_FAILURE
错误分析:往往与电源有关系, 常常发生在与电源相关的操作, 比如:关机、待机或休睡.
解决方案:重装系统, 如果不能解决, 请更换电源.
、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.
、0x000000B4:VIDEO_DRIVER_INIT_FAILURE
错误分析:这个停止信息表示Windows因为不能启动显卡驱动, 从而无法进入图形界面. 通常是显卡的问题, 或者是存在与显卡的硬件冲突(比如:与并行或串行端口冲突).
解决方案:进入安全模式查看问题是否解决, 如果可以, 请升级最新的显卡驱动程序, 如果还不行, 则很可能是显卡与并行端口存在冲突, 需要在安全模式按下WIN+break组合键打开"系统属性", 在硬件-->设备管理器中找到并双击连接打印的LPT1端口的选项, 在"资源"选项卡中取消"使用自动配置"的勾选, 然后将"输入/输出范围"的"03BC"改为"0378".
、0x000000BE:ATTEMPTED_WRITE_TO_READONLY_MEMORY
错误分析:某个驱动程序试图向只读内存写入数据造成的. 通常是在安装了新的驱动程序, 系统服务或升级了设备的固件程序后.
解决方案:如果在错误信息中包含有驱动程序或者服务文件名称, 请根据这个信息将新安装的驱动程序或软件卸载或禁用.
、0x000000C2:BAD_POOL_CALLER
错误分析:一个内核层的进程或驱动程序错误地试图进入内存操作. 通常是驱动程序或存在BUG的软件造成的.
解决方案:请参考前面介绍的常规解决方案相关项目进行排除.
、0x000000CERIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
错误分析:通常是由有问题的驱动程序或系统服务造成的.
解决方案:请参考前面介绍的常规解决方案相关项目进行排除.
、0x000000D1RIVER_IRQL_NOT_LESS_OR_EQUAL
错误分析:通常是由有问题的驱动程序引起的(比如罗技鼠标的Logitech MouseWare 9.10和9.24版驱动程序会引发这个故障). 同时,有缺陷的内存、 损坏的虚拟内存文件、 某些软件(比如多媒体软件、杀毒软件、备份软件、DVD播放软件)等也会导致这个错误.
解决方案:检查最新安装或升级的驱动程序(如果蓝屏中出现"acpi.sys"等类似文件名, 可以非常肯定是驱动程序问题)和软件; 测试内存是否存在问题; 进入"故障恢复控制台", 转到虚拟内存页面文件Pagefile.sys所在分区, 执行"del pagefile.sys"命令, 将页面文件删除; 然后在页面文件所在分区执行"chkdsk /r"命令;进入Windows后重新设置虚拟内存.如果在上网时遇到这个蓝屏, 而你恰恰又在进行大量的数据下载和上传(比如:网络游戏、BT下载), 那么应该是网卡驱动的问题, 需要升级其驱动程序.
、0x000000EA:THREAD_STUCK_IN_DEVICE_DRIVER
错误分析:通常是由显卡或显卡驱动程序引发的.
解决方案:先升级最新的显卡驱动, 如果不行, 则需要更换显卡测试故障是否依然发生.
、0x000000ED:UNMOUNTABLE_BOOT_VOLUME
错误分析:一般是由于磁盘存在错误导致的, 有时也建议检查硬盘连线是否接触不良, 或是没有使用合乎该硬盘传输规格的连接线, 例如ATA-100仍使用ATA-33的连接线, 对低速硬盘无所谓, 但告诉硬盘(支持ATA-66以上)的要求较严格, 规格不对的连线有时也会引起这类没办法开机的故障. 如果在修复后, 还是经常出现这个错误, 很可能是硬盘损坏的前兆.
解决方案:一般情况下, 重启会解决问题, 不管怎么样都建议执行"chkdsk /r"命令来检查修复硬盘
、0x000000F2:HARDWARE)INTERRUPT_STORM
错误分析:内核层检查到系统出现中断风暴, 比如:某个设备在完成操作后没有释放所占用的中断. 通常这是由缺陷的驱动程序造成的.
解决方案:升级或卸载最新安装的硬件驱动程序.
、0x00000135:UNABLE_TO_LOCATE_DLL
错误分析:通常表示某个文件丢失或已经损坏, 或者是注册表出现错误.
解决方案:如果是文件丢失或损坏, 在蓝屏信息中通常会显示相应的文件名, 你可以通过网络或是其他电脑找到相应的文件, 并将其复制到系统文件夹下的SYSTEM32子文件夹中. 如果没有显示文件名, 那就很有可能是注册表损坏, 请利用系统还原或是以前的注册表备份进行恢复.
、0x0000021A:STATUS_SYSTEM_PROCESS_TERMINATED
错误分析:用户模式子系统, 例如Winlogon或客服服务运行时子系统(CSRSS)已损坏, 所以无法再保证安全性, 导致系统无法启动. 有时, 当系统管理员错误地修改了用户帐号权限, 导致其无法访问系统文件和文件夹.
解决方案:使用"最后一次正确的配置", 如果无效, 可使用安装光盘进行修复安装.
、STOP 0xC0000221 or STATUS_IMAGE_CHECKSUM_MISMATCH
错误分析:通常是由于驱动程序或系统DLL文件损坏造成的. 一般情况下, 在蓝屏中会出现
文件名称
解决方案:
使用Windows安装光盘进行修复安装;
如果还能进入安全模式, 可以"开始-->运行": sfc /scannow
还可以采用提取文件的方法来解决, 进入"故障恢复控制台", 使用copy或expand命令从光盘中复制或解压受损的文件. 不过, 蓝屏一般都是驱动程序文件的问题, 所以expand命令会用的都一些, 比如:蓝屏中提示tdi.sys文件, 因为驱动文件一般在i386\driver压缩包里, 所以使用: expand %CDROM:\i386\driver.cab \f:tdi.sys c:\winnt\system\drivers.(xp为expand %CDROM:\i386\driver.cab \f:tdi.sys c:\windowns\system\drivers)
、如果启动时出现这些蓝屏停机码
如果在Windows启动时出现蓝屏, 并出现附表一中的错误信息, 那么多半时硬件出现了问题, 请用硬件厂商提供的诊断工具来判断硬件是否存在问题, 并到其网站查看是否有最新的BIOS或固件更新程序. 如果硬件没有问题, 重装Windows 2000 ~ XP
xp关机蓝屏分析大全
系统Bug导致关机蓝屏
有一个关机故障的Bug,如果你的计算机在关机过程中时常出现关机蓝屏,而且该故障是间歇性的,按下“Ctrl+Alt+Delete”键也毫无反应,那么可以肯定你的系统还没有打上相应的补丁。请下载SP1补丁包打上补丁,一般就可以了。
声卡驱动导致关机蓝屏
如果你使用的是创新声卡,并且在关机过程中出现蓝屏,错误码是“0X0000000A”,那么,请进入设备管理器,将声卡删除,刷新后,手动安装最新的带有数字签名的驱动程序。
罗技鼠标、键盘不完善导致关机蓝屏
如果你使用的是罗技的网络键盘,并且安装了Key Commander软件来驱动键盘相应的网络功能,则有可能造成关机变成重启故障。如果你的罗技鼠标的驱动程序是MouseWare8.6,则会造成关机蓝屏故障,你只有卸载该驱动才能解决问题。>>蓝屏代码0x000000D1
漏洞蓝屏
这个漏洞曾在2004年12月份报道过,它同时会影响到Windows Server 2003以及Windows XP Tablet PC Edition 2005。在某些情况下,安装第三方杀毒软件或防火墙时,Windows不能指定制作者或包装商的标题,导致生成读"Stop 0x05 (INVALID_PROCESS_ATTACH_ATTEMPT)" 错误,使到OS进入到蓝屏状态。下载微软补丁可以解决。
北桥散热不良导致蓝屏
死机现象:一台使用中的电脑,近期出现频繁死机的现象。刚开始以为是感染病毒,经查杀后未发现任何病毒。又认为是硬盘碎片过多,导致系统不稳定。但整理硬盘碎片后仍然没有解决问题。无奈之下,格式化系统盘,重新安装了系 统,但问题仍旧没有解决,严重影响了日常工作。
死机分析:重装系统后故障未排除,看样子是硬件出现了问题。刚开始怀疑内存故障。但更换内存条之后故障仍然没有解决。那问题到底出现在哪儿呢?通过仔细分析,既然内存没有问题,主板出现故障的可能性最大。
于是利用替换法,更换主板后,打开电脑进行测试,故障消失,看来问题的根源就出现在这块主板上。这是一块杂牌的865PE芯片组主板,主板的用料做工相当一般。仔细检查,发现主板上的电容并没有击穿的现象,整个PCB板上也没有留下烧过的痕迹,那么到底是主板哪个部位出现问题。于是重新将主板清理之后再次装入电脑接入各种设备。开机后半个时又出现了死机的现象,这时用手触摸主板北桥芯片上的散热片,发现非常烫手,看来问题是出现这上面了。
于是购买了一块带有风扇的散热器,经过一番折腾后,终于更换完毕,并将更换下来的北桥散热片安装在了南桥芯片上。(杂牌的主板南桥芯片完全裸露在外面,没有安装任何的散热片。)开始后经过一番测试,故障完全排除,后通过仔细分析,才明白了这次故障的原因。原来机器是在冬季配的,温度较低并没有产生太大的影响,然后入夏后问题就暴露出来了。
问题总结:出现这类问题,一般情况下都会先去考虑内存条。然而由于主板Cache有问题或主板设计散热不良引起也容易出现频繁死机的现象。笔者在某品牌845PE主板上就曾发现因主板散热不够好而导致该故障。在死机后触摸CPU周围主板元件,发现其温度非常高且烫手。更换大功率风扇后,死机故障得以解决。对于Cache有问题的故障,可以进入CMOS设置程序,将Cache禁止后即可顺利解决问题,当然,Cache禁止后速度那就肯定会有影响了。
部分电脑安装XP SP3蓝屏的解决方案
已经发布多时,但是,如果你打算使用具有AMD CPU的HP/Compaq电脑安装XP SP3的话,当心遭遇蓝屏死机(BSoD,blue screen of death),然而,解决的办法似乎就是不停的重启。
于近日公布了一个解决方法,很简单,只要更改一个文件名即可,简而言之就是4步:
启动计算机时,按F8键,进入安全模式;
找到这个位置:C:\Windows\System32\Drivers,定位到intelppm.sys文件;
将其重命名,如:XXXintelppm.syx;
重启。
你看下你电脑蓝屏的时候是什么代码,找到相应的解决方案就行。建议换内存。
蓝屏含义
电脑蓝屏,又叫蓝屏死机(Blue Screen of Death,缩写为:BSoD),指的是微软Windows操作系统在无法从一个系统错误中恢复过来时所显示的屏幕图像。
1、故障检查信息
***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4)
KMODE_EXCEPTION_NOT_HANDLED ***其中错误的第一部分是停机码(Stop Code)也就是STOP 0x0000001E, 用于识别已发生错误的类型, 错误第二部分是被括号括起来的四个数字集, 表示随机的开发人员定义的参数(这个参数对于普通用户根本无法理解, 只有驱动程序编写者或者微软操作系统的开发人员才懂). 第三部分是错误名. 信息第一行通常用来识别生产错误的驱动程序或者设备. 这种信息多数很简洁, 但停机码可以作为搜索项在微软知识库和其他技术资料中使用
2.推荐操作
蓝屏第二部分是推荐用户进行的操作信息. 有时, 推荐的操作仅仅是一般性的建议(比如: 到销售商网站查找BIOS的更新等); 有时, 也就是显示一条与当前问题相关的提示. 一般来说, 惟一的建议就是重启.
3.调试端口告诉用户内存转储映像是否写到磁盘上了, 使用内存转储映像可以确定发生问题的性质, 还会告诉用户调试信息是否被传到另一台电脑上, 以及使用了什么端口完成这次通讯. 不过, 这里的信息对于普通用户来说, 没有什么意义.有时保卫科可以顺利的查到是哪个生产小组的问题, 会在第一部分明确报告是哪个文件犯的错, 但常常它也只能查个大概范围, 而无法明确指明问题所在. 由于工厂全面被迫停止, 只有重新整顿开工, 有时, 那个生产小组会意识到错误 , 不再重犯. 但有时仍然会试图哄抢零件, 于是厂领导不得不重复停工决定(不能启动并显示蓝屏信息, 或在进行相同操作时再次出现蓝屏).
蓝屏的处理方法
Windows 2K/XP蓝屏信息非常多, 无法在一篇文章中全面讲解, 但他们产生的原因往往集中在不兼容的硬件和驱动程序、有问题的软件、病毒等, 因此首先为大家提供了一些常规的解决方案, 在遇到蓝屏错误时, 应先对照这些方案进行排除.
1.重启
有时只是某个程序或驱动程序一时犯错, 重启后他们会改过自新.(注意:此时参见8.查询停机码)
2.新硬件
首先, 应该检查新硬件是否插牢, 这个被许多人忽视的问题往往会引发许多莫名其妙的故障. 如果确认没有问题, 将其拔下, 然后换个插槽试试, 并安装最新的驱动程序. 同时还应对照微软网站的硬件兼容类别检查一下硬件是否与操作系统兼容. 如果你的硬件没有在表中, 那么就得到硬件厂商网站进行查询, 或者拨打他们的咨询电话.
3.新驱动和新服务
如果刚安装完某个硬件的新驱动, 或安装了某个软件, 而它又在系统服务中添加了相应项目(比如:杀毒软件、CPU降温软件、防火墙软件等), 在重启或使用中出现了蓝屏故障, 请到安全模式来卸载或禁用它们.
4.检查病毒
比如冲击波和振荡波等病毒有时会导致Windows蓝屏死机, 因此查杀病毒必不可少. 同时一些木马间谍软件也会引发蓝屏, 所以最好再用相关工具进行扫描检查.
5.检查BIOS和硬件兼容性
对于新装的电脑经常出现蓝屏问题, 应该检查并升级BIOS到最新版本, 同时关闭其中的内存相关项, 比如:缓存和映射. 另外 还应该对照微软的硬件兼容列表检查自己的硬件. 还有就是, 如果主板BIOS无法支持大容量硬盘也会导致蓝屏, 需要对其进行升级.
6、运行“sfc /scannow”来检查系统文件是否被替换,然后用系统安装盘来恢复.
小提示:
BIOS的缓存和映射项
Video BIOS Shadowing (视频BIOS映射)
Shadowing address ranges(映射地址列)
System BIOS Cacheable(系统BIOS缓冲)
Video BIOS Cacheable(视频BIOS缓冲)
Video RAM Cacheable(视频内存缓冲)
7.检查系统日志
在开始-->菜单中输入:EventVwr.msc, 回车出现"事件查看器", 注意检查其中的"系统日志"和"应用程序日志"中表明"错误"的项.
8.查询停机码
把蓝屏中密密麻麻的E文记下来, 接着到其他电脑中上网, 进入微软帮助与支持网站http://support.microsoft.com?, 在左上角的"搜索(知识库)"中输入停机码, 如果搜索结果没有适合信息, 可以选择"英文知识库"在搜索一遍. 一般情况下, 会在这里找到有用的解决案例. 另外, 在baidu、Google等搜索引擎中使用蓝屏的停机码或者后面的说明文字为关键词搜索, 往往也会有收获.
9.最后一次正确配置
一般情况下, 蓝屏都是在硬件驱动或新加硬件并安装驱动后, 这时Windows 2K/XP提供的"最后一次正确配置"就是解决蓝屏的快捷方式. 重启系统, 在出现启动菜单时按下F8键就会出现高级启动选项菜单, 接着选择"最后一次正确配置".
10.安装最新的系统补丁和Service Pack
有些蓝屏是Windows本身存在缺陷造成的, 应此可通过安装最新的系统补丁和Service Pack来解决.
蓝屏代码含义和解决方案
使用windows出现蓝色屏幕是经常的事,而且每每因为不清楚错误的来源而频繁重新安装系统,劳神费时。下列收集了一些windows死机密码,供大家参考。
1、0x0000000A:IRQL_NOT_LESS_OR_EQUAL
◆错误分析:主要是由问题的驱动程序、有缺陷或不兼容的硬件与软件造成的. 从技术角度讲. 表明在内核模式中有级别进程请求(IRQL)访问其没有权限访问的内存地址.
◇解决方案:请用前面介绍的解决方案中的2、3、5、8、9方案尝试排除.
2、0x00000012:TRAP_CAUSE_UNKNOWN
◆错误分析:如果遇到这个错误信息, 那么很不幸, 应为KeBudCheck分析的结果是错误原因
未知.
◇解决方案:既然微软都帮不上忙, 就得靠自己了, 请仔细回想这个错误是什么时候出现的; 第一次发生时你对系统做了哪些操作; 发生时正在进行什么操作. 从这些信息中找出可能的原因, 从而选择相应解决方案尝试排除.
3、0x0000001A:MEMORY_MANAGEMENT
◆错误分析:这个内存管理错误往往是由硬件引起的, 比如: 新安装的硬件、内存本身有问题等.
◇解决方案:如果是在安装Windows时出现, 有可能是由于你的电脑达不到安装Windows的最小内存和磁盘要求.
4、0x0000001E:KMODE_EXCEPTION_NOT_HANDLED
◆错误分析:Windows内核检查到一个非法或者未知的进程指令,这个停机码一般是由问题的内存或是与前面0x0000000A相似的原因造成的.
◇解决方案:
(1)硬件兼容有问题:请对照前面提到的最新硬件兼容性列表, 查看所有硬件是否包含在该列表中.
(2)有问题的设备驱动、系统服务或内存冲突和中断冲突: 如果在蓝屏信息中出现了驱动程序的名字, 请试着在安装模式或者故障恢复控制台中禁用或删除驱动程序, 并禁用所有刚安装的驱动和软件. 如果错误出现在系统启动过程中, 请进入安全模式, 将蓝屏信息中所标明的文件重命名或者删除.
(3)如果错误信息中明确指出Win32K.sys: 很有可能是第三方远程控制软件造成的, 需要从故障恢复控制台中将对该软件的服务关闭.
(4)在安装Windows后第一次重启时出现:最大嫌疑可能时系统分区的磁盘空间不足或BIOS兼容有问题.
(5)如果是在关闭某个软件时出现的:很有可能时软件本生存在设计缺陷, 请升级或卸载它.
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驱动. 如果你的光驱、可移动存储器也提供有驱动程序, 最好将它们升级至最新版.
6、0x00000027:RDR_FILE_SYSTEM
◆错误分析:这个错误产生的原因很难判断, 不过Windows内存管理出了问题很可能会导致这个停机码的出现.
◇解决方案:如果是内存管理的缘故, 通常增加内存会解决问题.
7、0x0000002EATA_BUS_ERROR
◆错误分析:系统内存存储器奇偶校验产生错误, 通常是因为有缺陷的内存(包括物理内存、二级缓存或者显卡显存)时设备驱动程序访问不存在的内存地址等原因引起的. 另外, 硬盘被病毒或者其他问题所损伤, 以出现这个停机码.
◇解决方案:
(1)检查病毒
(2)使用"chkdsk /r"命令检查所有磁盘分区.
(3)用Memtest86等内存测试软件检查内存.
(4)检查硬件是否正确安装, 比如:是否牢固、金手指是否有污渍.
8、0x00000035:NO_MORE_IRP_STACK_LOCATIONS
◆错误分析:从字面上理解, 应该时驱动程序或某些软件出现堆栈问题. 其实这个故障的真正原因应该时驱动程序本生存在问题, 或是内存有质量问题.
◇解决方案:请使用前面介绍的常规解决方案中与驱动程序和内存相关的方案进行排除.
9、0x0000003F:NO_MORE_SYSTEM_PTES
◆错误分析:一个与系统内存管理相关的错误, 比如:由于执行了大量的输入/输出操作, 造成内存管理出现问题: 有缺陷的驱动程序不正确地使用内存资源; 某个应用程序(比如:备份软件)被分配了大量的内核内存等.
◇解决方案:卸载所有最新安装的软件(特别是哪些增强磁盘性能的应用程序和杀毒软件)和驱动程序.
10、0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS
◆错误分析:通常是由硬件驱动程序引起的.
◇解决方案:卸载最近安装的驱动程序. 这个故障很少出现, 目前已经知道的是, 在使用 www.in-system.com/这家公司的某些软件时会出现, 其中的罪魁就是Falstaff.sys文件.(作者难道不怕吃官司嘛, 把公司网址公布)
11、0x00000050: PAGE_FAULT_IN_NONPAGED+AREA
◆错误分析:有问题的内存(包括物理内存、二级缓存、显存)、不兼容的软件(主要是远程控制和杀毒软件)、损坏的NTFS卷以及有问题的硬件(比如: PCI插卡本身已损坏)等都会引发这个错误.
◇解决方案:请使用前面介绍的常规解决方案中与内存、软件、硬件、硬盘等相关的方案进行排除.
12、0x00000051:REGISTRY_ERROR
◆错误分析:这个停机码说明注册表或系统配置管理器出现错误, 由于硬盘本身有物理损坏或文件系统存在问题, 从而造成在读取注册文件时出现输入/输出错误.
◇解决方案:使用"chkdsk /r"检查并修复磁盘错误.
13、0x00000058:FTDISK_INTERNAL_ERROR
◆错误分析:说明在容错集的主驱动发生错误. ?
◇解决方案:首先尝试重启电脑看是否能解决问题, 如果不行, 则尝试"最后一次正确配置"进行解决.
14、0x0000005E:CRITICAL_SERVICE_FAILED
◆错误分析:某个非常重要的系统服务启动识别造成的.
◇解决方案:如果是在安装了某个新硬件后出新的, 可以先移除该硬件, 并通过网上列表检查它是否与Windows 2K/XP兼容, 接着启动电脑, 如果蓝屏还是出现, 请使用"最后一次正确配置"来启动Windows, 如果这样还是失败, 建议进行修复安装或是重装.
15、0x0000006F:SESSION3_INITIALIZATION-FAILED
◆错误分析:这个错误通常出现在Windows启动时, 一般是由有问题的驱动程序或损坏的系统文件引起的.
◇解决方案:建议使用Windows安装光盘对系统进行修复安装.
16、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".
17、0x00000077:KERNEL_STACK_INPAGE_ERROR
◆错误分析:说明需要使用的内核数据没有在虚拟内存或物理内存中找到. 这个错误常常是磁盘有问题, 相应数据损坏或受到病毒侵蚀.
◇解决方案:使用杀毒软件扫描系统; 使用"chkdsk /r"命令检查并修复磁盘错误, 如不行则使用磁盘厂商提供的工具检查修复.
18、0x0000007A:KERNEL_DATA_INPAGE_ERROR
◆错误分析:这个错误往往是虚拟内存中的内核数据无法读入内存造成的. 原因可能是虚拟内存页面文件中存在坏簇病毒、磁盘控制器出错、内存有问题.
◇解决方案:首先用升级为最新病毒库杀毒软件查杀病毒, 如果信息中还有0xC000009C或0xC000016A代码, 那么表示是坏簇造成的, 并且系统的磁盘检测工具无法自动修复, 这时要进入"故障恢复控制台", 用"chkdsk /r"命令进行手动修复.
19、0x0000007B:INACESSIBLE_BOOT_DEVICE
◆错误分析:Windows在启动过程中无法访问系统分区或启动卷. 一般发生在更换主板后第一次启动时, 主要是因为新主板和旧主板的IDE控制器使用了不同芯片组造成的. 有时也可能是病毒或硬盘损伤所引起的.
◇解决方案:一般只要用安装光盘启动电脑, 然后执行修复安装即可解决问题. 对于病毒则可使用DOS版的杀毒软件进行查杀(有kv2005DOS版下载). 如果是硬盘本身存在问题, 请将其安装到其他电脑中, 然后使用"chkdsk /r"来检查并修复磁盘错误.
20、0x0000007E:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
◆错误分析:系统进程产生错误, 但Windows错误处理器无法捕获. 其产生原因很多, 包括:硬件兼容性、有问题的驱动程序或系统服务、 或者是某些软件.
◇解决方案:请使用"事件查看器"来获取更多的信息, 从中发现错误根源.(发现好像不是解决哦, 看来这里大家要自力更生了!)
21、0x0000007F:UNEXPECTED_KERNEL_MOED_TRAP
◆错误分析:一般是由于有问题的硬件(比如:内存)或某些软件引起的. 有时超频也会产生这个错误.
◇解决方案:用检测软件(比如:Memtest86)检查内存, 如果进行了超频, 请取消超频. 将PCI硬件插卡从主板插槽拔下来, 或更换插槽. 另外, 有些主板(比如:nForce2主板)在进行超频后, 南桥芯片过热也会导致蓝屏, 此时为该芯片单独增加散热片往往可以有效解决问题.
22、0x00000080:NMI_HARDWARE_FAILURE
◆错误分析:通常是有硬件引起的.(似乎蓝屏与硬件错误有不解之缘)
◇解决方案:如果最近安装了新硬件, 请将其移除, 然后试试更换插槽和安装最新的驱动程序, 如果升级了驱动程序, 请恢复后原来的版本; 检查内存金手指是否有污染和损坏; 扫描病毒; 运行"chkdsk /r"检查并修复磁盘错误; 检查所有硬件插卡已经插牢. 如果以上尝试都无效果, 就得找专业的电脑维修公司请求帮助了.
23、0x0000008E:KERNEL_MODE_EXCEPTION_NOT_HANDLED
◆错误分析:内核级应用程序产生了错误, 但Windows错误处理器没有捕获. 通常是硬件兼容性错误.
◇解决方案:升级驱动程序或升级BIOS.
24、0x0000009C:MACHINE_CHECK_EXCEPTION
◆错误分析:通常是硬件引起的. 一般是因为超频或是硬件存在问题(内存、CPU、总线、电
源).
◇解决方案:如果进行了超频, 请降下CPU原来频率, 检查硬件.
25、0x0000009FRIVER_POWER_STATE_FAILURE
◆错误分析:往往与电源有关系, 常常发生在与电源相关的操作, 比如:关机、待机或休睡.
◇解决方案:重装系统, 如果不能解决, 请更换电源.
26、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.
27、0x000000B4:VIDEO_DRIVER_INIT_FAILURE
◆错误分析:这个停止信息表示Windows因为不能启动显卡驱动, 从而无法进入图形界面. 通常是显卡的问题, 或者是存在与显卡的硬件冲突(比如:与并行或串行端口冲突).
◇解决方案:进入安全模式查看问题是否解决, 如果可以, 请升级最新的显卡驱动程序, 如果还不行, 则很可能是显卡与并行端口存在冲突, 需要在安全模式按下WIN+break组合键打开"系统属性", 在硬件-->设备管理器中找到并双击连接打印的LPT1端口的选项, 在"资源"选项卡中取消"使用自动配置"的勾选, 然后将"输入/输出范围"的"03BC"改为"0378".
28、0x000000BE:ATTEMPTED_WRITE_TO_READONLY_MEMORY
◆错误分析:某个驱动程序试图向只读内存写入数据造成的. 通常是在安装了新的驱动程序, 系统服务或升级了设备的固件程序后.
◇解决方案:如果在错误信息中包含有驱动程序或者服务文件名称, 请根据这个信息将新安装的驱动程序或软件卸载或禁用.
29、0x000000C2:BAD_POOL_CALLER
◆错误分析:一个内核层的进程或驱动程序错误地试图进入内存操作. 通常是驱动程序或存在BUG的软件造成的.
◇解决方案:请参考前面介绍的常规解决方案相关项目进行排除.
30、0x000000CERIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
◆错误分析:通常是由有问题的驱动程序或系统服务造成的.
◇解决方案:请参考前面介绍的常规解决方案相关项目进行排除.
31、0x000000D1RIVER_IRQL_NOT_LESS_OR_EQUAL
◆错误分析:通常是由有问题的驱动程序引起的(比如罗技鼠标的Logitech MouseWare 9.10和9.24版驱动程序会引发这个故障). 同时,有缺陷的内存、 损坏的虚拟内存文件、 某些软件(比如多媒体软件、杀毒软件、备份软件、DVD播放软件)等也会导致这个错误.
◇解决方案:检查最新安装或升级的驱动程序(如果蓝屏中出现"acpi.sys"等类似文件名, 可以非常肯定是驱动程序问题)和软件; 测试内存是否存在问题; 进入"故障恢复控制台", 转到虚拟内存页面文件Pagefile.sys所在分区, 执行"del pagefile.sys"命令, 将页面文件删除; 然后在页面文件所在分区执行"chkdsk /r"命令;进入Windows后重新设置虚拟内存.如果在上网时遇到这个蓝屏, 而你恰恰又在进行大量的数据下载和上传(比如:网络游戏、BT下载), 那么应该是网卡驱动的问题, 需要升级其驱动程序.
32、0x000000EA:THREAD_STUCK_IN_DEVICE_DRIVER
◆错误分析:通常是由显卡或显卡驱动程序引发的.
◇解决方案:先升级最新的显卡驱动, 如果不行, 则需要更换显卡测试故障是否依然发生.
33、0x000000ED:UNMOUNTABLE_BOOT_VOLUME
◆错误分析:一般是由于磁盘存在错误导致的, 有时也建议检查硬盘连线是否接触不良, 或是没有使用合乎该硬盘传输规格的连接线, 例如ATA-100仍使用ATA-33的连接线, 对低速硬盘无所谓, 但告诉硬盘(支持ATA-66以上)的要求较严格, 规格不对的连线有时也会引起这类没办法开机的故障. 如果在修复后, 还是经常出现这个错误, 很可能是硬盘损坏的前兆.
◇解决方案:一般情况下, 重启会解决问题, 不管怎么样都建议执行"chkdsk /r"命令来检查修复硬盘
34、0x000000F2:HARDWARE)INTERRUPT_STORM
◆错误分析:内核层检查到系统出现中断风暴, 比如:某个设备在完成操作后没有释放所占用的中断. 通常这是由缺陷的驱动程序造成的.
◇解决方案:升级或卸载最新安装的硬件驱动程序.
35、0x00000135:UNABLE_TO_LOCATE_DLL
◆错误分析:通常表示某个文件丢失或已经损坏, 或者是注册表出现错误.
◇解决方案:如果是文件丢失或损坏, 在蓝屏信息中通常会显示相应的文件名, 你可以通过网络或是其他电脑找到相应的文件, 并将其复制到系统文件夹下的SYSTEM32子文件夹中. 如果没有显示文件名, 那就很有可能是注册表损坏, 请利用系统还原或是以前的注册表备份进行恢复.
36、0x0000021A:STATUS_SYSTEM_PROCESS_TERMINATED
◆错误分析:用户模式子系统, 例如Winlogon或客服服务运行时子系统(CSRSS)已损坏, 所以无法再保证安全性, 导致系统无法启动. 有时, 当系统管理员错误地修改了用户帐号权限, 导致其无法访问系统文件和文件夹.
◇解决方案:使用"最后一次正确的配置", 如果无效, 可使用安装光盘进行修复安装.
37、STOP 0xC0000221 or STATUS_IMAGE_CHECKSUM_MISMATCH
◆错误分析:通常是由于驱动程序或系统DLL文件损坏造成的. 一般情况下, 在蓝屏中会出现
文件名称
.sys文件;
3. 将其重命名,如:XXXintelppm.sys;
4. 重启。[5]
-----------------------------------------------
人有的时候都会闹情绪,更何况是机器呢。Windows有时候也会跟我们闹闹情绪,小则是“应用程序遇到问题需要关闭”,搞不好还可能给您脸色看看。但是,这脸色可不是红的白的,而是一张“蓝脸”,您见过吗?首先,我们介绍以下三个重要的问题:
一、到底什么是“蓝脸”?
这里指的就是大家经常称之为“蓝屏”、“系统崩溃”之类的东西,外国人又叫它BSOD(Blue Screen of Death)。从专业的角度讲,这一术语被定义为“是指当Microsoft Windows崩溃或停止执行(由于灾难性的错误或者内部条件阻止系统继续运行下去)时所显示的蓝色屏幕”。而我们平常所说的“系统崩溃(system crash)”或者“内核错误(kernel error)”抑或“停止错误(Stop error)”的专业术语为“程序错误检查(Bug Check)”。
二、为什么一定要给您“蓝脸”?
一旦遇上系统蓝屏崩溃,大多数的人都会以为Windows不行了所以就瘫痪了,有点罪魁祸首是Windows或者Windows不够强悍、不够稳定的意思。可是,Windows在默默地喊冤您知道吗?要知道,每当有内核模式设备驱动程序或者子系统引发了一个非法异常,Windows就会面临这个艰难的抉择,虽然Windows最终还是选择了崩溃,但是这并不代表它就不能够忽略该异常,让设备驱动程序或者子系统继续往下执行。Windows之所以要选择“亡我”,是因为它不知道该错误是否能被隔离出来从而不伤害系统的其它程序与数据,或者该组件将来是否能够恢复正常,而且,Windows深知,这个异常更有可能来源于更深层的问题,比如由于内存的常规破坏(General Corruption),或者由于硬件设备不能正常工作。允许系统继续运行可能导致更多的异常,而且,存储在磁盘或其他外设中的数据可能也会遭受破坏。Windows意识到,这样做的风险太大了,为了您的程序、数据安全与完整,为了将您的损失在第一时间减小至最低,Windows于是忍痛做出了自我牺牲……
三、怎样给出“蓝脸”?
当系统检测到引发崩溃的致命错误时,Windows自己执行崩溃函数“KeBugCheckEx”。该函数接受一个停止代码(STOP Code,也称为错误检查码“Bug Check Code”),以及四个根据停止代码来解释的参数(下文中会有图例)。在调用KeBugCheckEx之后,首先该系统所有处理器上的所有中断将被屏蔽,然后系统将显示器切换到低分辨率的VGA图形模式(因为这是所有Windows平台显卡均支持的通用模式),绘制一个蓝色背景,然后显示此停止代码,并且后面紧跟一些对用户诊断错误有帮助的关键信息。最后,KeBugCheckEx调用所有已注册的设备驱动程序错误检查回调函数(这种回调函数通过调用KeRegisterBugCheckCallback函数来注册),从而让这些驱动程序停止运行它们所支配的设备(有系统数据结构已经被破坏得太严重以至于蓝屏都显示不出来的可能性)。
以下情况会引发系统蓝屏崩溃:
l 1、运行在内核模式下的设备驱动程序或者操作系统函数引发了一个未被处理的异常,比如内存访问违例(由于企图写一个只读页面或者企图读一个当前未被映射的内存地址(即无效地址)而引起)。
l 2、调用一个内核支持例程导致了重新调度,比如当中断请求级别(IRQL)为DPC/Dispatch级别或更高级别时等待一个标记为需要等待的调度对象。
l 3、在DPC/Dispatch级别或更高的IRQL级别时由于数据存在于页面文件或内存映射文件中而发生了页面错误(Page Fault)。(这将要求内存管理器必须等待一个I/O操作发生。但正如上面一项所说,在DPC/Dispatch级别或更高IRQL级别上不能够进行等待,因为那将要求一次重新调度)。
l 4、当检测到一个内部状态表明数据已遭受破坏或者在保证数据不被破坏的情况下系统无法继续执行时,设备驱动程序或操作系统函数明确地要求系统崩溃(通过调用系统函数KeBugCheckEx)。
、发生硬件错误,比如处理器的计算机检查异常功能(Machinel 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的在线帮助和支持(http://support.microsoft.com)中查找该停止代码等信息或者使用我们的利器——WinDbg进行手动分析了。笔者推荐后者,因为同一个停止代码可能由各种各样的驱动程序错误造成,得到了停止代码并不等于得到了问题文件名称,另外,微软的在线帮助和支持中不是所有的错误都能够搜索到,而WinDbg正好克服了这两个弱点,直接能够抓出罪魁祸首文件,让您痛快将其斩首。
WinDbg是免费软件,其微软官方下载地址是http://www.microsoft.com/whdc/devtools/debugging/default.mspx,具体项目为Install Debugging Tools for Windows 32/64-bit Version。
使用WinDbg分析崩溃时的内存转储文件的前提是您要让系统在崩溃时自动生成一个内存转储文件,做法如下:
1、单击开始,然后单击运行。
2、键入 control sysdm.cpl
复制代码
,然后单击确定。您将会打开系统属性,请切换到高级选项卡。结果如下图所示:
3、在高级选项卡上,在启动和故障恢复部分中单击设置。这将打开启动和故障恢复对话框,如下图所示:
4、在写入调试信息列表中,选择“小内存转储(64 KB)”或“核心内存转储”,这样系统在崩溃时将会自动生成对应的内存转储文件。如果您不想让蓝屏只闪烁一下,而是想看清楚它直到您手动重新启动计算机,请清除系统失败部分中自动重新启动(R)项目前的复选框。然后单击确定。
5、在启动和故障恢复对话框中,单击确定。
6、单击确定关闭系统属性对话框。
7、在系统设置更改对话框中,如果要立即重新启动计算机,则单击是;如果要稍后重新启动计算机,则单击否。
l 注:
l 对于原版操作系统,以上设置是默认的(除了禁止自动重新启动)。l Vista用户请类似操作。 对于第4点中的写入调试信息列表内容,现给出以下参照释义:
(以上三种转储文件的大小依次增大,关于三者的比较不在本文讨论范围之内,笔者仅推荐设置为“小内存转储”或者“核心内存转储”,一般性错误“小内存转储”就足够了,如不能完好分析请选择“核心内存转储”。为了数据的丰富性,您也可以直接选择“核心内存转储”,但笔者强烈不推荐完全内存转储。)
值得注意的是,为了确保崩溃时自动生成内存转储文件,您可能还须启用虚拟内存页面文件。特别地,当您选择记录核心内存转储时,您必须启用虚拟内存页面文件,而且由于核心内存转储文件的大小取决于该机器上操作系统和所有活动驱动程序已经分配的内核模式内存的数量,因此没有很好的办法来预测内核内存转储的大小。下表仅给出该情况下的参考虚拟内存大小设置值:
另外,除了页面文件占用的磁盘空间,内存转储文件(*.DMP)的生成位置所在的磁盘还要有足够的空闲空间来提取这个转储文件,否则一样会“生成不了”(实际上是丢失了)。
设置好这些之后,一旦您的系统发生蓝屏崩溃,系统就会在以上设置中选中的相应内存转储文件类型下对应的目录处生成转储文件。您所要做的就是立刻拿出利器——启动WinDbg进行分析。
笔者在此将结合一个实例进行详细说明,过程中包含了WinDbg调试蓝屏用到的一些命令,这些命令将不再额外整理,请于阅读过程中注意识记。
首先,您要配置WinDbg将要使用的调试符号文件(Symbol File)的位置。什么是调试符号文件呢?符号文件随DLL文件或者EXE文件建立时产生,提供包含在可执行文件和动态链接库 (DLL) 中的函数的占位空间。此外,符号文件还可以表示达到失败点的函数调用路线图。当我们使用各种Microsoft工具调试应用程序时,必须拥有符号信息,这样才能正确分析出问题根源。那我们该如何设置调试符号文件的位置呢?我们既可以从微软官网下载完整的符号文件包(同位于WinDbg下载页面),也可以使用微软的符号文件服务器(Microsoft Symbol Server)。笔者推荐后者,因为一次分析所要用到的符号文件局限于有限的几个而已,使用后者可以让程序自动下载,既节省时间,又可以确保符号文件是最新的并且是正确的。在WinDbg中点击“File”菜单,选择“Symbol File Path …”,在打开的对话框中输入
SRV*DownstreamStore*http://msdl.microsoft.com/download/symbols
复制代码
后点击“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
复制代码
命令,可以得到停止代码及其参数,这和上图的区域1、蓝屏上的信息是一致的。本例中可以得到如下结果:
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”的小内存转储文件(命令中的文件名可以改成其它的)。