在Microsoft的各种Windows平台中,蓝屏错误都是十分令人讨厌的。尤其是对于驱动程序开发者来说,它通常意味着一次重新启动(苦啊!我就总是要求老板给我配一台启动快的机器)。不过它也为我们提供了相关的信息让我们发现程序中的错误。这里就将蓝屏时系统显示的信息和它们的所表示的错误及相关内容列表作一个说明。希望以此能够对大家有所帮助。
异常信息
IRQL_NOT_LESS_OR_EQUAL
异常代码
0x0A
异常描述
驱动程序在等于或高于DISPATCH_LEVEL的IRQL上访问分页内存
参数1
参数2
参数3
参数4
被引用的内存地址
引用时的IRQL
0:读操作 1:写操作
引用该内存的代码的地址
异常信息
KMODE_EXCEPTION_NOT_HANDLED
异常代码
0x1E
异常描述
内核模式程序产生一个未处理的异常
参数1
参数2
参数3
参数4
异常代码
产生异常的地址
异常的参数1
异常的参数2
异常信息
NTFS_FILE_SYSTEM
异常代码
0x24
异常描述
在NTFS.SYS中发生问题
参数1
参数2
参数3
参数4
源文件和行号
异常记录的地址(可选)
环境记录的地址(可选)
原始异常发生的地址(可选)
异常信息
DATA_BUS_ERROR
异常代码
0x2E
异常描述
通常表示已经探测到系统内存中的奇偶校验错误;通常是硬件问题
参数1
参数2
参数3
参数4
导致错误的虚拟地址
导致错误的物理地址
处理器状态寄存器(PSR)
故障指令寄存器(FIR)
异常信息
NO_MORE_IRP_STACK_LOCATIONS
异常代码
0x35
异常描述
IoCallDriver调用时驱动程序堆栈中没有多余的空间
参数1
参数2
参数3
参数4
IRP的地址
保留
保留
保留
异常信息
NO_MORE_SYSTEM_PTES
异常代码
0x3F
异常描述
存在系统页面表碎片
参数1
参数2
参数3
参数4
保留
保留
保留
保留
异常信息
PAGE_FAULT_IN_NONPAGED_AREA
异常代码
0x50
异常描述
引用了无效的系统内存
参数1
参数2
参数3
参数4
被引用的内存地址
0:读操作 1:写操作
引用该内存的地址(如果知道)
保留
异常信息
FTDISK_INTERNAL_ERROR
异常代码
0x58
异常描述
从一个镜像分区的错误拷贝中引导系统
参数1
参数2
参数3
参数4
保留
保留
保留
保留
异常信息
PROCESS_HAS_LOCKED_PAGES
异常代码
0x76
异常描述
驱动程序在I/O操作后没有释放锁定的页面
参数1
参数2
参数3
参数4
0
进程地址
被锁定页的编号
0或驱动程序堆栈指针
异常信息
KERNEL_STACK_INPAGE_ERROR
异常代码
0x77
异常描述
内核数据从分页文件中请求的页不能读进内存中
参数1
参数2
参数3
参数4
状态码或0
进行签名的堆栈中发现的值,或者I/O状态码
0或页文件编码
内核堆栈上的签名地址,或者页文件上的偏移量
异常信息
MISMATCHED_HAL
异常代码
0x79
异常描述
硬件抽象层(HAL)修订级别或者配置与内核或者机器不匹配
说明
参数1
参数2
参数3
参数4
PRCB发行级不匹配
1
ntoskrnl.exe发行等级
1:hal.dll发行等级
保留
编译类型不匹配
2
ntoskrnl.exe版本类型
2:hal.dll版本类型
保留
宏通道(Macro Channel)不匹配
3
引导期间探测到的机器类型
3:HAL支持的机器类型
保留
异常信息
KERNEL_DATA_INPAGE_ERROR
异常代码
0x7A
异常描述
内核数据从分页文件中请求的页不能读进内存
参数1
参数2
参数3
参数4
拥有的锁定类型或者页表项地址
I/O状态码
锁定类型为1或2:当前进程 锁定类型为3 :虚拟地址
不能读进内存页的虚拟地址
异常信息
INACCESSIBLE_BOOT_DEVICE
异常代码
0x7B
异常描述
Windows 2000在启动期间丢失了对系统分区的访问。这一错误总是在系统正在启动而不能被调试的情况下发生,因为它通常在操作系统装入调试器之前发生
参数1
参数2
参数3
参数4
不能安装的设备对象的地址
0
0
0
异常信息
UNEXCEPTED_KERNEL_MODE_TRAP
异常代码
0x7F
异常描述
内核不能捕获的陷井,由Intel CPU产生
参数1
参数2
参数3
参数4
保留
保留
保留
保留
异常信息
DRIVER_POWER_STATE_FAILURE
异常代码
0x9F
异常描述
驱动程序处于电源不一致或无效状态
说明
参数1
参数2
参数3
参数4
被释放的设备对象仍然有一个还没有完成的电源请求
1
设备对象指针
保留
保留
设备对象完成处理系统电源状态请求的IRP,但是调用PoStartNextPowerIrp失败
2
目标设备对象指针
设备对象指针
保留
设备驱动程序不能正确地把IRP设为挂起或者完成IRP
3
目标设备对象指针
设备对象指针
IRP
设备节点中的设备对象在使用DO_POWER_PAGABLE方面不一致
4
非分页设备对象指针
目标设备对象指针
要通告的设备指针
父设备对象已经探测到子设备对象没有设置DO_POWER_PAGABLE位
5
子设备对象(FDO)
子设备对象指针(PDO)
父设备对象指针
异常信息
ATTEMPTED_WRITE_TO_READONLY_MEMORY
异常代码
0xBE
异常描述
驱动程序正试图写入只读内存段
参数1
参数2
参数3
参数4
试图写入的虚拟地址
PTE地址
保留
保留
异常信息
SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
异常代码
0xC1
异常描述
驱动程序写入专用内存池的无效段
说明
参数1
参数2
参数3
参数4
试图释放未分配的池
驱动程序试图释放的地址
保留
0
0x20
试图释放有害地址
驱动程序试图释放的地址
请求的字节数
计算的字节数
0x21、0x22
在相同的页上附近的字节被破坏时释放一个地址
驱动程序试图释放的地址
位被破坏处的地址
保留
0x23
当字节在分配结束后被覆盖时释放一个地址
驱动程序试图释放的地址
位被破坏处的地址
保留
0x24
试图在不正确的IRQL上分配池
当前的IRQL
池类型
要分配的字节数
0x30
试图在不正确的IRQL上释放池
当前的IRQL
池类型
驱动程序试图释放的地址
0x31
异常信息
BAD_POOL_CALLER
异常代码
0xC2
异常描述
当前线程正在发出一个错误的池请求
说明
参数1
参数2
参数3
参数4
池的头部已经破坏
0x01、0x02或0x04
池的头部的指针
池的头部第一部分内容
0
试图释放已经释放的池
0x06
保留
池的头部的指针
池的头部的内容
试图释放已经释放的池
0x07
保留
池的头部的指针
0
试图在一个无效的IRQL上分配池
0x08
当前IRQL
池类型
分配的尺寸
试图在一个无效的IRQL上释放池
0x09
当前IRQL
池类型
池地址
试图释放在用户模式地址上的内存池
0x40
开始地址
系统地址空间开始的地址
0
试图释放未分配的非分页池地址
0x41
开始地址
物理页框架
最高的物理页框架
试图释放未分配的分页池地址
0x50
开始地址
页面中从分页池开始的偏移量
分页池以字节为单位的尺寸
试图释放有无效地址的池(或者池的头部已经被破坏)
0x99
要释放的地址
0
0
异常信息
DRIVER_CORRUPTED_EXPOOL
异常代码
0xC5
异常描述
驱动程序可能已经破坏了系统池
参数1
参数2
参数3
参数4
引用的内存
引用时的IRQL
0:读取 1:写入
引用内存的代码的地址
异常信息
DRIVER_CAUGHT_MODIFYING_FREED_POOL
异常代码
0xC6
异常描述
驱动程序试图访问已经释放的内存池
参数1
参数2
参数3
参数4
引用的内存
0:读取 1:写入
0:内核模式 1:用户模式
保留
异常信息
TIMER_OR_DPC_INVALID
异常代码
0xC7
异常描述
内核计数器或者延迟过程调用(DPC)对象不存在
参数1
参数2
参数3
参数4
0:计时器对象 1:DPC对象3:DPC例程
对象的地址
被检查的内存范围的开始地址
被检查的内存范围的结束地址
异常信息
PNP_FATAL_ERROR
异常代码
0xCA
异常描述
PnP管理程序遇到一个严重错误,可能是一个有问题的即插即用驱动程序引起的
说明
参数1
参数2
参数3
参数4
复制PDO。驱动程序的一个特定实例列举多个具有对等设备和唯一的ID的PDO
0x01
最新报告的PDO的地址
以前已经被复制的PDO地址
保留
无效的PDO。用没有被初始化的随机内存、FDO或者PDO调用要求一个PDO的API
0x02
假定的PDO的地址
保留
保留
无效的ID。一个列举器返回一个ID,它包含无效的或者没有正确结束的字符(ID只能是从0x20到0x2B和0x2D到0x7F范围内的字符)
0x04
设置了DO_DELETE_PENDING的PDO地址
ID缓冲区
1:DeviceID 2:UniquelID 3:HardwareID 4:CompatibleID
PDO连接在设备节点树中时被释放。对象管理程序对PDO的引用降到0,而设备节点仍然连接在树中(这通常指示,在一个查询IRP中返回一个PDO时,驱动程序没有增加一个引用计数)
0x05
PDO的地址
保留
保留
异常信息
DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS
异常代码
0xCB
异常描述
驱动程序在一个I/O操作后没有释放锁定的页面
参数1
参数2
参数3
参数4
驱动程序中锁定页面的调用地址
驱动程序中锁定页面的调用地址的调用者
包含锁定页面的MDL的指针
非法驱动程序的名字(Unicode字符串指针)
异常信息
PAGE_FAULT_IN_FREED_SPECIAL_POOL
异常代码
0xCC
异常描述
系统引用了已经被释放的内存
参数1
参数2
参数3
参数4
引用的内存地址
0:读取 1:写入
引用内存的代码的地址(如果知道)
保留
异常信息
PAGE_FAULT_BEYOND_END_OF_ALLOCATION
异常代码
0xCD
异常描述
系统访问驱动程序池分配尾部之外的内存
参数1
参数2
参数3
参数4
引用的内存地址
0:读取 1:写入
引用内存的代码的地址(如果知道)
保留
异常信息
DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
异常代码
0xCE
异常描述
驱动程序没有在卸载之前取消挂起的操作
参数1
参数2
参数3
参数4
引用的内存地址
0:读取 1:写入
引用内存的代码的地址(如果知道)
保留
异常信息
TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE
异常代码
0xCF
异常描述
终端服务器驱动程序产生了不正确的内存引用
参数1
参数2
参数3
参数4
引用的内存地址
0:读取 1:写入
引用内存的代码的地址(如果知道)
保留
异常信息
DRIVER_CORRUPTED_MMPOOL
异常代码
0xD0
异常描述
驱动程序已经破坏了系统池
参数1
参数2
参数3
参数4
引用的内存地址
引用内存时的IRQL
0:读取 1:写入
引用内存的代码的地址
异常信息
DRIVER_IRQL_NOT_LESS_OR_EQUAL
异常代码
0xD1
异常描述
驱动程序试图在等于或高于DISPATCH_LEVEL的IRQL级别上访问分页内存
参数1
参数2
参数3
参数4
引用的内存地址
引用内存时的IRQL
0:读取 1:写入
引用内存的代码的地址
异常信息
DRIVER_PORTION_MUST_BE_NONPAGED
异常代码
0xD3
异常描述
驱动程序错误地把某些代码和数据标志为可分页
参数1
参数2
参数3
参数4
引用的内存地址
引用内存时的IRQL
0:读取 1:写入
引用内存的代码的地址
异常信息
SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD
异常代码
0xD4
异常描述
驱动程序在卸载前没有取消挂起的操作
参数1
参数2
参数3
参数4
引用的内存地址
引用内存时的IRQL
0:读取 1:写入
引用内存的代码的地址
异常信息
DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL
异常代码
0xD5
异常描述
驱动程序引用了已经被释放的内存
参数1
参数2
参数3
参数4
引用的内存地址
0:读取 1:写入
引用内存的代码的地址(如果知道)
保留
异常信息
DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
异常代码
0xD6
异常描述
驱动程序访问它的池分配尾部之外的内存
参数1
参数2
参数3
参数4
引用的内存地址
0:读取 1:写入
引用内存的代码的地址(如果知道)
保留
异常信息
DRIVER_UNMAPPING_INVALID_VIEW
异常代码
0xD7
异常描述
驱动程序试图解除一段无效地址空间的映射
参数1
参数2
参数3
参数4
要求解除映射的地址
0:系统不是终端报务器 1:系统是终端服务器
0
0
异常信息
DRIVER_USED_EXCESSIVE_PTES
异常代码
0xD8
异常描述
驱动程序试图访问超出系统页表项编号的页表项
参数1
参数2
参数3
参数4
非法驱动程序名字的指针(Unicode字符串)或者0
非法驱动程序使用的PTE编号(如果参数1不为0)
总的空闲系统PTE数目
总的系统PTE数目
异常信息
DRIVER_CORRUPTED_SYSPTES
异常代码
0xDB
异常描述
驱动程序破坏了系统页表项
参数1
参数2
参数3
参数4
被引用的内存地址
引用时的IRQL
0:读取 1:写入
引用内存的代码的地址
异常信息
DRIVER_INVALID_STACK_ACCESS
异常代码
0xDC
异常描述
驱动程序访问位于当前堆栈指针以下的堆栈中的数据
参数1
参数2
参数3
参数4
保留
保留
保留
保留
异常信息
DRIVER_INVALID_STACK_ACCESS
异常代码
0xDE
异常描述
驱动程序破坏了用于保存页面到磁盘的池内存
参数1
参数2
参数3
参数4
保留
保留
保留
保留
异常信息
WORKER_THREAD_RETURNED_AT_BAD_IRQL
异常代码
0xE1
异常描述
工作例程从等于或高于DISPATCH_LEVEL的IRQL上返回
参数1
参数2
参数3
参数4
工作例程的地址
IRQL(应该是0)
工作项目参数
工作项目地址
异常信息
MANUALLY_INITATED_CRASH
异常代码
0xE2
异常描述
用户故意从内核调试器或键盘激活一个故障转储
参数1
参数2
参数3
参数4
保留
保留
保留
保留
异常信息
RESOURCE_NOT_OWNED
异常代码
0xE3
异常描述
线程试图释放并非它拥有的资源
参数1
参数2
参数3
参数4
资源的地址
线程的地址
资源拥有者的地址(如果它存在)
保留
异常信息
WORKER_INVALID
异常代码
0xE4
异常描述
在不必包含Executive的工作者项的内存中发现这样的项
参数1
参数2
参数3
参数4
代码位置指示器
工作者的地址
池块的头
池块的尾