您的位置:首页 > 服装鞋帽 > 男鞋 > 常见 Windows 7Vista 蓝屏代码分析

常见 Windows 7Vista 蓝屏代码分析

luyued 发布于 2011-05-27 18:34   浏览 N 次  

  Windows崩溃-蓝屏/黑屏,其产生的原因很多。常见的资源信息一般的会被指向一段内存地址,这段地址被错误的访问,要么就是一个在只读区域的写操作或者在一个未被映射的地址上的读操作。另外一种常见的原因是一个非预见性异常或者陷阱。抑或者,崩溃是由于一个内核子系统或者驱动程序在进行操作的过程中检测到了一个不一致性所引起的。 当一个内核设备驱动程序或者子系统引起一个非法的异常,windows将会面对一个困境。它被检测到操作系统具有访问任何硬件以及任何合法地址的那一部分做了不该做的工作。

  之所以会产生崩溃而不是让操作系统继续尝试恢复或者其他的什么操作来忽略这些错误,例如一个通常类得内存访问或者设备驱动的操作不正确,如果要操作系统继续向下进行工作的话,有可能会产生更多的异常,并且磁盘存储的数据或者其他的外围设备数据将会被破坏,这个风险值太高。所以Windows系统就会利用fail fast协议尝试防止在内存中的破坏蔓延到磁盘,进而产生崩溃以保护数据的完整性。

  Windows Vista/Windows 7错误代码超过300,但是根据微软在线分析中心的同居数据来看,自Vista SP1发布以后的Vista崩溃提交的信息中,有30个主要的崩溃占据了所有崩溃的96%的份额,也就是说,这30个错误代码是目前Windows操作系统主要的崩溃原因。

  下面列出这部分代码的基本含义:

  Page fault页面错误:

  此类错误发生在数据类的内存支持的页面文件或者内存映射文件中,主要是在数据保护控制分发级别或更高的IRQL,这个需要内存管理器必须等待一个I/O操作的产生。内核不能等待或者重新计划对于数据保护控制/分发级别的IRQL线程。这类错误还包括在非页面区域的页面错误。其常见的停止代码如下:

  0xA IRQL_NOT_LESS_OR_EQUAL

  0xD1 DRIVER_IRQL_NOT_LESS_OR_EQUAL

  Power management/电源管理:

  设备驱动程序或者是操作系统功能运行在一个不一致的或者是无效的电源状态的内核模式下。多数情况下,一些组件无法在10分钟内完成内存管理I/O的请求操作。这类错误是自vista后新添加进来的,在早期版的windows下,这类错误会引起系统挂起但是不会引起崩溃。停止代码如下:

  0x9F DRIVER_POWER_STATE_FAILURE

  0XA0 INTERNAL_POWER_ERROR

  EXCEPTIONS AND TRAPS/异常和陷阱

  一个在内核模式下运行的设备驱动或者系统功能导致非预期性的异常或者陷阱。常见的错误代码:

  0x1E KMODE_EXCEPTION_NOT_HANDLED

  0x3b SYSTEM_SERVICE_EXCEPTION

  0X7E SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

  0x7F UNEXPECTED_KERNEL_MODE_TRAP

  0x8E KERNEL_MODE_EXCEPTION_NOT_HANDLED with P1 != 0Xc000005 STATUS_ACCESS_VIOLATION

  ACCESS VIOLATION/访问违例

  一个在内核模式下运行的设备驱动程序或者系统功能导致的内存访问违例,错误的原因是尝试在只读的页面区域内写入、尝试读取的地址当前未被映射并且是一段非合法性内存区。常见代码:

  0x50 PAGE_FAULT_IN_NONPAGED_AREA

  0x8E KERNEL_MODE_EXCEPTION_NOT_HANDLED with P1= 0Xc0000005 STATUS_ACCESS_VIOLATION

  Display/显示:

  显示设备驱动程序检测到无法控制GPU或者检测到一个显示内存管理下的非一致性。常见代码:

  0xEA THREAD_STUCK_IN_DEVICE_DRIVER

  0x10E VIDEO_MEMORY_MANAGEMENT_INTERNAL

  0x116 VIDEO_TDR_FAILURE

  POOL/池

  内核池管理器检测到不当的池关系。常见代码:

  0xC2 BAD_POOL_CALLER

  0xC5 DRIVER_CORRUPTED_EXPOOL

  MEMORY MANAGEMENT/内存管理

  内核内存管理器检测到一个损坏的内存管理数据指令或者一个不当的内存管理请求。常见代码:

  0x1A MEMORY_MANAGEMENT

  0x4E PFN_LIST_CORRUPT

  CONSISTENCY CHECK/一致性检查

  此项检查由内核或者设备驱动来完成。常见代码:

  0x18 REPERENCE_BY_POINTER

  0x35 NO_MORE_IRP_STACK_LOCATION

  0x44 MULTIPLE_IRP_COMPLETE_REQUESTS

  0xCE DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATI ON

  0x8086 iastor.sys 主要由于intel的存储驱动引起

  HARDWARE/硬件

  硬件错误。也包括当内存管理器尝试读取数据到符合页面错误的规则的磁盘错误。常见代码:

  0x77 KERNEL_STACK_INPAGE_ERROR

  0x7A KERNEL_DATA_INPAGE_ERROR

  0x124 WHEA_UNCORRECTABLE_ERROR

  0x101 CLOCK_WATCHDOG_TIMEOUT (软件的bug也会引起这个错误,但是通常出现在超频的系统上)

  USB 由于一个USB总线上的操作引起的不可恢复性的错误。常见代码:

  0xFE BUGCODE_USB_DRIVER

  CRITICAL OBJECT/关键性目标

  一个使得windows不能运行的关键性目标引起的致命性错误。常见代码:

  0xF4 CRITICAL_OBJECT_TERMINATION

  NTFS FILE SYSTEM/NTFS文件系统

  由NTFS文件系统检测到的一个致命性错误。常见代码:

  0x24 NTFS_FILE_SYSTEM

  上图是截至到2008年9月微软的在线分析中心获取的 Vista SP1自发布以来的崩溃信息统计数据。由于windows 7的核心和Vista几乎是一模一样的,那么针对已有的Vista在线分析数据可以作为windows 7的蓝屏分析的一个很好的参考性数据,毕竟这两个系统在最基本的硬件管理、内存管理、内核管理上并没有本质上的区别,甚至在大多数情况下是相通的。这个有别于XP系统。

广告赞助商