windows2000蓝屏信息详解
在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调用时驱动程序堆栈中没有多余的空间 |
| |
异常信息 | NO_MORE_SYSTEM_PTES | 异常代码 | 0x3F | 异常描述 | 存在系统页面表碎片 |
| |
异常信息 | PAGE_FAULT_IN_NONPAGED_AREA | 异常代码 | 0x50 | 异常描述 | 引用了无效的系统内存 |
| 参数1 | 参数2 | 参数3 | 参数4 | 被引用的内存地址 | 0:读操作 1:写操作 | 引用该内存的地址(如果知道) | 保留 |
|
异常信息 | FTDISK_INTERNAL_ERROR | 异常代码 | 0x58 | 异常描述 | 从一个镜像分区的错误拷贝中引导系统 |
| |
异常信息 | 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产生 |
| |
异常信息 | 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 | 异常描述 | 驱动程序访问位于当前堆栈指针以下的堆栈中的数据 |
| |
异常信息 | DRIVER_INVALID_STACK_ACCESS | 异常代码 | 0xDE | 异常描述 | 驱动程序破坏了用于保存页面到磁盘的池内存 |
| |
异常信息 | WORKER_THREAD_RETURNED_AT_BAD_IRQL | 异常代码 | 0xE1 | 异常描述 | 工作例程从等于或高于DISPATCH_LEVEL的IRQL上返回 |
| 参数1 | 参数2 | 参数3 | 参数4 | 工作例程的地址 | IRQL(应该是0) | 工作项目参数 | 工作项目地址 |
|
异常信息 | MANUALLY_INITATED_CRASH | 异常代码 | 0xE2 | 异常描述 | 用户故意从内核调试器或键盘激活一个故障转储 |
| |
异常信息 | RESOURCE_NOT_OWNED | 异常代码 | 0xE3 | 异常描述 | 线程试图释放并非它拥有的资源 |
| 参数1 | 参数2 | 参数3 | 参数4 | 资源的地址 | 线程的地址 | 资源拥有者的地址(如果它存在) | 保留 |
|
异常信息 | WORKER_INVALID | 异常代码 | 0xE4 | 异常描述 | 在不必包含Executive的工作者项的内存中发现这样的项 |
| 参数1 | 参数2 | 参数3 | 参数4 | 代码位置指示器 | 工作者的地址 | 池块的头 | 池块的尾 |
|
|
原作者:tonny
来 源:转载
回复Comments
作者:
{commentrecontent}