蓝屏代码0x000000C9代表"DRIVER_VERIFIER_IOMANAGER_VIOLATION",这意味着Windows驱动程序验证器检测到输入/输出管理器(I/O Manager)违规。这可能是由于一个驱动程序操作与操作系统的I/O管理不兼容或存在错误引起的。
要解决这个问题,可以尝试以下方法:
方法一:升级操作系统
【资料图】
某些情况下,升级到最新版本的操作系统可能会解决这个问题,确保你的操作系统是最新的,并按照系统更新进行升级。
方法二:禁用驱动程序验证
这个错误可能是由于启用了驱动程序验证引起的,打开命令提示符并以管理员身份运行命令“verifier / reset”来禁用驱动程序验证。
方法三:更新或卸载驱动程序
如果错误是由于特定驱动程序引起的,你可以尝试更新该驱动程序到最新版本,或者,如果你知道哪个驱动程序引起了问题,你可以尝试卸载它。
方法四:使用一键修复工具助手(强烈推荐)
1、首先你的电脑必须下载与完成安装完成快快蓝屏修复助手。如果你还没有安装点击下方链接下载。
下载地址:>>>快快蓝屏修复助手<<<
提示:安装路径不要选择C盘,避免产生问题造成损失。
2、找到你电脑中的快快蓝屏修复助手,点击进入。看到首页后,点击首页一键扫描按钮开始扫描。等待几分钟,就能获取你急切想要的结果。
3、扫描完成后会显示电脑的所有蓝屏记录以及蓝屏的详细信息。
4、解决方案页面显示了导致该次蓝屏的具体原因和解决方案,点击右上角的一键修复进行修复。
5、切记,当修复完成之后我们还是需要重新启动计算机的。毕竟一切修复的结果,需要重新后,才能被系统认可。
当你完成重启后,你电脑的蓝屏问题已经基本解决了。相信小编,不要急需卸载快快蓝屏修复助手。毕竟它强大的功能是你未来的一个保障,可以随时随地为你服务,让你再次遇到蓝屏问题不在抓狂。
其他相关信息:
DRIVER_VERIFIER_IOMANAGER_VIOLATION bug 检查 的值为 0x000000C9。 这是所有驱动程序验证程序 I/O 验证冲突的 bug 检查代码。
DRIVER_VERIFIER_IOMANAGER_VIOLATION参数
当驱动程序验证程序处于活动状态且选择 I/O 验证时,各种 I/O 冲突将导致发出此 bug 检查。 参数 1 标识冲突的类型。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 错误消息的原因 |
---|---|---|---|---|
0x01 | 正在释放的 IRP 的地址 | 0 | 0 | 驱动程序尝试释放其类型不是IO_TYPE_IRP的对象。 |
0x02 | 正在释放的 IRP 的地址 | 0 | 0 | 驱动程序尝试释放仍与线程关联的 IRP。 |
0x03 | 正在发送的 IRP 的地址 | 0 | 0 | 驱动程序向 IoCallDriver传递了不等于 IRP_TYPE 的 IRP 类型。 |
0x04 | 设备对象的地址 | 0 | 0 | 驱动程序向 IoCallDriver传递了无效的设备对象。 |
0x05 | 与违规驱动程序关联的设备对象的地址 | IoCallDriver之前的 IRQL | IoCallDriver 之后的IRQL | IRQL 在调用驱动程序调度例程期间发生了更改。 |
0x06 | IRP 状态 | 正在完成的 IRP 地址 | 0 | 名为 IoCompleteRequest的驱动程序,其状态标记为挂起 (或等于 -1) 。 |
0x07 | 取消例程的地址 | 正在完成的 IRP 地址 | 0 | 驱动程序调用 IoCompleteRequest,而其取消例程仍处于设置状态。 |
0x08 | 设备对象的地址 | IRP 主要函数代码 | 异常状态代码 | 驱动程序向 IoBuildAsynchronousFsdRequest传递了无效缓冲区。 |
0x09 | 设备对象的地址 | I/O 控制代码 | 异常状态代码 | 驱动程序传递了 IoBuildDeviceIoControlRequest无效缓冲区。 |
0x10 | 当前 IRQL | 预留 | 预留 | DISPATCH_LEVEL上面调用了 IoCallDriver。 |
0x11 | 驱动程序快速 I/O 调度例程地址 | 调用驱动程序调度例程之前的 IRQL | 当前 IRQL | DISPATCH_LEVEL上面调用了 IoCallDriver。 |
0x12 | 驱动程序调度例程地址 | 调用驱动程序调度例程之前的 IRQL | 当前 IRQL | DISPATCH_LEVEL上面调用了 IoCallDriver。 |
0x0A | 设备对象的地址 | 0 | 0 | 驱动程序向 IoInitializeTimer传递了具有已初始化计时器的设备对象。 |
0x0C | I/O 状态块的地址 | 0 | 0 | 驱动程序已将 I/O 状态块传递给 IRP,但此块在已取消转换的堆栈上分配。 |
0x0D | 用户事件对象的地址 | 0 | 0 | 驱动程序将用户事件传递给 IRP,但此事件在已超过该点的堆栈上分配。 |
0x0E | 当前 IRQL | IRP 地址 | 0 | 名为 IoCompleteRequest的驱动程序与 IRQL > DISPATCH_LEVEL。 |
0x0F | 要向其发送 IRP 的设备对象的地址 | 指向 IRP 的指针 | 指向文件对象的指针 | 驱动程序发送了一个创建请求,其中包含已关闭或已取消其打开的文件对象。 |
除了上表中提到的错误外,还有一些 I/O 验证错误会导致驱动程序验证程序停止系统,但这些错误实际上不是 bug 检查。
这些错误会导致消息显示在蓝屏、故障转储文件和内核调试器中。 这些消息在每个位置的显示方式不同。 发生这些错误时,十六进制 bug 检查代码0xC9,bug 检查字符串DRIVER_VERIFIER_IOMANAGER_VIOLATION不会出现在蓝屏或调试器中,尽管它们将显示在故障转储文件中。
在蓝屏上,将显示以下数据:
消息 IO 系统验证错误。
消息 WDM DRIVER ERRORXXX,其中 XXX是表示特定错误的十六进制代码。 (有关 I/O 错误代码及其含义的列表,请参阅下表。)
导致错误的驱动程序的名称。
通常,驱动程序代码中检测到错误的地址 (参数 2) 。
如果已启用内核模式故障转储,故障转储文件中将显示以下信息:
消息 BugCheck 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION) 。
十六进制 I/O 错误代码。 (有关 I/O 错误代码及其含义的列表,请参阅下表。)
通常,驱动程序代码中检测到错误的地址 (参数 2) 。
如果内核调试器附加到导致此冲突的系统,则会将以下信息发送到调试器:
消息 WDM DRIVER ERROR,以及错误严重性的评估。
导致错误的驱动程序的名称。
说明此错误原因的描述性字符串。 通常会传递其他信息,例如指向 IRP 的指针或指向设备对象或 IRQL 信息的指针。 (有关这些描述性字符串的列表以及指定了哪些其他信息,请参阅下表。)
用于进一步操作的查询。 可能的响应包括 b(break) 、 i(ignore) 、 z(zap) 、 r(remove) 或 d(disable) 。 通过指示操作系统继续,你可以查看“下行”在未发生此错误时会发生什么情况。 当然,这通常会导致额外的 bug 检查。 “zap”选项实际上会删除导致发现此错误的断点。
注意无法以这种方式忽略任何其他 bug 检查。 只能忽略此类 I/O 验证错误,即使这些错误也只能在附加内核调试器时被忽略。
下表列出了可能出现的 I/O 验证错误。
I/O 错误代码 | 严重性 | 错误消息的原因 |
---|---|---|
0x200 | Unknown | 此代码涵盖所有未知 的 I/O 验证错误。 |
0x201 | Fatal error | 设备正在删除自身,而其下有另一个设备位于驱动程序堆栈中。 这可能是因为调用方忘记先调用 IoDetachDevice,或者下级驱动程序可能错误地删除了自身。 参数 2 - 驱动程序代码中检测到错误的地址。 |
0x202 | Fatal error | 驱动程序尝试从未附加到任何内容的设备对象分离。 如果在同一设备对象上调用分离两次,则可能会出现这种情况。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - 设备对象地址。 |
0x203 | Fatal error | 驱动程序调用 了 IoCallDriver,但没有将 IRP 中的取消例程设置为 NULL。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x204 | Fatal error | 调用方已传入 NULL作为设备对象。 这是致命的。 参数 2 - 保留 参数 3 - 保留 |
0x205 | Fatal error | 调用方正在转发当前在该 IRP 下排队的 IRP。 处理此驱动程序中返回STATUS_PENDING的 IRP 的代码似乎已损坏。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x206 | Fatal error | 调用方错误地转发了 IRP (控件字段未归零) 。 驱动程序应使用 IoCopyCurrentIrpStackLocationToNext或 IoSkipCurrentIrpStackLocation。 参数 2 - 保留 参数 3 - 保留 |
0x207 | Fatal error | 调用方已手动复制堆栈,并无意中复制了上层的完成例程。 驱动程序应使用 IoCopyCurrentIrpStackLocationToNext。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x208 | Fatal error | 此 IRP 即将耗尽堆栈位置。 可能有人从另一个堆栈转发了此 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x209 | Fatal error | 调用方正在完成当前排队的 IRP。 处理此驱动程序中返回STATUS_PENDING的 IRP 的代码似乎已损坏。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x20A | Fatal error | IoFreeIrp的调用方正在释放仍在使用的 IRP。 参数 2 - 保留 参数 3 - 保留 |
0x20B | Fatal error | IoFreeIrp的调用方正在释放仍在使用的 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x20C | Fatal error | IoFreeIrp的调用方正在释放仍在针对线程排队的 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x20D | Fatal error | IoInitializeIrp的调用方已通过 IoAllocateIrp分配的 IRP。 这是非法和不必要的,并已导致配额泄漏。 如果正在回收此 IRP,请查看 IoReuseIrp的文档。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x20E | 非致命错误 | PNP IRP 的状态无效。 (任何 PNP IRP 都必须将其状态初始化为 STATUS_NOT_SUPPORTED.) 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x20F | 非致命错误 | Power IRP 的状态无效。 (任何 Power IRP 都必须将其状态初始化为 STATUS_NOT_SUPPORTED.) 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x210 | 非致命错误 | WMI IRP 的状态无效。 (任何 WMI IRP 都必须将其状态初始化为 STATUS_NOT_SUPPORTED.) 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x211 | 非致命错误 | 调用方在跳过堆栈中的设备对象时转发了 IRP。 调用方可能正在向 PDO 而不是 IoAttachDeviceToDeviceStack返回的设备发送 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x212 | 非致命错误 | 调用方已回收或未正确复制 IRP 的堆栈。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x213 | 非致命错误 | 调用方已更改它无法理解的 IRP 的状态字段。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x214 | 非致命错误 | 调用方更改了它无法理解的 IRP 的信息字段。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x215 | 非致命错误 | 正在向下传递IRP_MJ_PNP的不成功非STATUS_NOT_SUPPORTED IRP 状态。 必须完成失败的 PNP IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x216 | 非致命错误 | 以前设置IRP_MJ_PNP状态已转换为STATUS_NOT_SUPPORTED。 此失败状态保留供操作系统使用。 驱动程序不能使用此值使 PnP IRP 失败。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x217 | 非致命错误 | 驱动程序未处理所需的 IRP。 驱动程序必须更新 IRP 的状态,以指示是否已处理它。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x218 | 非致命错误 | 驱动程序已响应为堆栈中其他位置的其他设备对象保留的 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x219 | 非致命错误 | IRP_MJ_POWER的非成功非STATUS_NOT_SUPPORTED IRP 状态正在向下传递堆栈。 必须完成失败的 POWER IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x21A | 非致命错误 | 以前设置IRP_MJ_POWER状态已转换为STATUS_NOT_SUPPORTED。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x21B | 非致命错误 | 驱动程序已返回可疑状态。 这可能是由于驱动程序中未初始化的变量 bug 造成的。 参数 3 - IRP 地址。 |
0x21C | 警告 | 调用方已复制 IRP 堆栈,但未设置完成例程。 这效率低下 -- 请改用 IoSkipCurrentIrpStackLocation。 参数 2 - 保留 参数 3 - 保留 |
0x21D | Fatal error | 收到删除 IRP 后,IRP 调度处理程序未正确与下面的堆栈分离。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x21E | Fatal error | IRP 调度处理程序在收到删除 IRP 时未正确删除其设备对象。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x21F | 非致命错误 | 驱动程序尚未为所需的 IRP 主函数填写调度例程。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x220 | 非致命错误 | IRP_MJ_SYSTEM_CONTROL已由 ProviderId 以外的其他人完成。 此 IRP 应已提前完成,或者应该已传递。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - ProviderId。 |
0x221 | Fatal error | PDO 的 IRP 调度处理程序已删除其设备对象,但尚未在总线关系查询中报告硬件缺失。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x222 | Fatal error | 当 PDO 仍然处于活动状态时,收到删除 IRP 时,总线筛选器的 IRP 调度处理程序已分离。 总线筛选器必须在 FastIoDetach回调中清理。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x223 | Fatal error | 总线筛选器的 IRP 调度处理程序已删除其设备对象,但 PDO 仍然存在。 总线筛选器必须在 FastIoDetach回调中清理。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x224 | Fatal error | IRP 调度处理程序返回的状态与 IRP 的 IoStatus.Status字段不一致。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 预期状态代码。 |
0x225 | 非致命错误 | IRP 调度处理程序返回了非法 (0xFFFFFFFF) 状态。 这可能是由于未初始化的堆栈变量造成的。 若要调试此错误,请使用具有指定地址的 ln (List Nearest Symbols) 命令。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 状态代码。 |
0x226 | Fatal error | IRP 调度处理程序已返回,但未传递或完成此 IRP,或者有人忘记返回STATUS_PENDING。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x227 | Fatal error | IRP 完成例程位于可分页代码中。 (这是永远不允许的。) 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x228 | 非致命错误 | 如果在传递给它的 IRP 中设置了 PendingReturned字段,驱动程序的完成例程尚未将 IRP 标记为挂起。 这可能会导致 Windows 挂起,尤其是在堆栈返回错误时。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x229 | Fatal error | 已为当前由堆栈中较低层的驱动程序处理的 IRP 设置了取消例程,这可能会使取消例程被踩踏。 参数 2 - 保留。 参数 3 - 保留。 |
0x22A | 非致命错误 | (PDO) 的物理设备对象尚未响应所需的 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x22B | 非致命错误 | 物理设备对象 (PDO) 忘记使用 TargetDeviceRelation查询的 PDO 填写设备关系列表。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x22C | Fatal error | 实现 TargetDeviceRelation查询的代码未在 PDO 上调用 ObReferenceObject。 参数 2 - 保留。 参数 3 - 保留。 |
0x22D | 非致命错误 | 调用方已完成一个它无法理解的IRP_MJ_PNP,而不是向下传递。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x22E | 非致命错误 | 调用方已完成成功的IRP_MJ_PNP,而不是向下传递。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x22F | 非致命错误 | 调用方已完成未受影响IRP_MJ_PNP (而不是将 IRP 向下传递) ,或者非 PDO 使用非法值STATUS_NOT_SUPPORTED使 IRP 失败。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x230 | 非致命错误 | 调用方已完成其无法理解的IRP_MJ_POWER,而不是将其传递。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x231 | Fatal error | 调用方已完成成功的IRP_MJ_POWER,而不是向下传递。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x232 | 非致命错误 | 调用方已完成未受影响IRP_MJ_POWER (,而不是将 IRP 向下传递) ,或者非 PDO 使用非法值STATUS_NOT_SUPPORTED使 IRP 失败。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x233 | 非致命错误 | 查询功能 IRP 中查询功能结构的版本字段未正确初始化。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x234 | 非致命错误 | 查询功能 IRP 中查询功能结构的大小字段未正确初始化。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x235 | 非致命错误 | 查询功能 IRP 中查询功能结构的地址字段未正确初始化为 -1。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x236 | 非致命错误 | 查询功能 IRP 中查询功能结构的 UI Number 字段未正确初始化为 -1。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x237 | Fatal error | 驱动程序发送了仅限系统使用的 IRP。 参数 2 - 保留。 参数 3 - 保留。 |
0x238 | 警告 | IoInitializeIrp的调用方已通过 IoAllocateIrp分配的 IRP。 这是非法的、不必要的,并且会对正常使用的性能产生负面影响。 如果正在回收此 IRP,请参阅 Windows 驱动程序工具包中的 IoReuseIrp。 参数 2 - 保留。 参数 3 - 保留。 |
0x239 | 警告 | IoCompleteRequest的调用方正在完成从未通过调用 IoCallDriver或 PoCallDriver转发的 IRP。 这可能是一个 bug。 参数 2 - 保留。 参数 3 - 保留。 |
0x23A | Fatal error | 驱动程序转发了 IRQL 中的 IRP,该 IRP 对于此主要代码是非法的。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x23B | 非致命错误 | 调用方已更改它无法理解的 IRP 的状态字段。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
下表列出了可能出现的其他 I/O 验证错误。 激活 增强型 I/O 验证时会出现这些错误。 有关详细信息,请参阅 增强型 I/O 验证。
I/O 错误代码 | 严重性 | 错误消息的原因 |
---|---|---|
0x23C | Fatal error | 驱动程序已完成 IRP,但未将 IRP 中的取消例程设置为 NULL。 参数 2 - 保留。 参数 3 - 保留。 |
0x23D | 非致命错误 | 驱动程序已返回STATUS_PENDING但未通过调用 IoMarkIrpPending将 IRP 标记为挂起。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 状态代码。 |
0x23E | 非致命错误 | 驱动程序已将 IRP 标记为挂起,但没有返回STATUS_PENDING。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 状态代码。 |
0x23F | Fatal error | 驱动程序尚未从它附加到的堆栈继承DO_POWER_PAGABLE位。 参数 2 - 保留。 参数 3 - 保留。 |
0x240 | Fatal error | 驱动程序正在尝试删除已通过先前调用 IoDeleteDevice删除的设备对象。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 2 - 保留。 参数 3 - 保留。 |
0x241 | Fatal error | 驱动程序在意外删除 IRP 期间分离了其设备对象。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x242 | Fatal error | 驱动程序在意外删除 IRP 期间删除了其设备对象。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x243 | Fatal error | 驱动程序未能清除 AddDevice末尾的DO_DEVICE_INITIALIZING标志。 参数 2 - 保留。 参数 3 - 保留。 参数 4 - |
0x244 | Fatal error | 驱动程序尚未从其附加到的设备对象复制DO_BUFFERED_IO或DO_DIRECT_IO标志。 参数 2 - 保留。 参数 3 - 保留。 |
0x245 | Fatal error | 驱动程序已设置DO_BUFFERED_IO和DO_DIRECT_IO标志。 这些标志互斥。 参数 2 - 保留。 参数 3 - 保留。 |
0x246 | Fatal error | 驱动程序无法从要附加到的设备对象复制 DeviceType字段。 参数 2 - 保留。 参数 3 - 保留。 |
0x247 | Fatal error 参数 2 - 保留。 参数 3 - 保留。 | 驱动程序已使无法合法失败的 IRP 失败。 |
0x248 | Fatal error | 驱动程序已将不是 PDO 的设备对象添加到了设备关系查询。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x249 | 非致命错误 | 驱动程序枚举了返回相同设备 ID 的两个子 PDO。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - 第一个设备对象地址。 参数 4 - 第二个设备对象地址。 |
0x24A | Fatal error | 驱动程序错误地调用了 IRQL 不等于 PASSIVE_LEVEL 的文件 I/O 函数。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - 保留。 参数 4 - 保留。 |
0x24B | Fatal error | 驱动程序已成功完成 TargetDeviceRelation类型的IRP_MN_QUERY_DEVICE_RELATIONS请求,但未正确填写请求或将 IRP 转发到基础硬件堆栈。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - 设备对象地址。 |
0x24C | 非致命错误 | 驱动程序已返回STATUS_PENDING但未通过调用 IoMarkIrpPending将 IRP 标记为挂起。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 状态代码。 |
0x24D | Fatal error | 驱动程序已将无效设备对象传递给需要 PDO 的函数。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 设备对象地址。 |
0x300 | 非致命错误 | 驱动程序返回了可疑状态。 这可能是由于驱动程序中未初始化的变量 bug 造成的。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 可疑状态代码。 |
0x301 | 非致命错误 | 驱动程序已在 IRQL > DISPATCH_LEVEL转发 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - IRQL 值不正确 |
0x302 | 非致命错误 | 驱动程序已在 IRQL > = APC_LEVEL 转发 IRP。 I/O 管理器需要将 APC 排队才能完成此请求。 APC 将无法运行,因为调用方已在 APC 级别,因此调用方可能会死锁。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 参数 4 - 错误的 IRQL 值。 |
0x306 | 非致命错误 | 驱动程序正在完成IRP_MJ_PNP (主要) ,并IRP_MN_REMOVE_DEVICE (具有失败状态代码的次要) 请求。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x307 | 非致命错误 | 驱动程序发出 I/O 请求,其中包含已发出信号的事件,并收到STATUS_PENDING响应。 这可能会导致在 I/O 完成之前展开。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x310 | 非致命错误 | 驱动程序正在重新初始化仍在使用的 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x311 | 非致命错误 | 驱动程序正在重新初始化使用 IoMakeAssociatedIrp、IoBuildAsynchronousFsdRequest、IoBuildSynchronousFsdRequest、IoBuildDeviceIoControlRequest 创建的 IRP。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
0x312 | 非致命错误 | 调用方为 IRP 状态信息字段提供的值大于系统缓冲区的输出部分。 参数 2 - 驱动程序代码中检测到错误的地址。 参数 3 - IRP 地址。 |
原因
有关原因的说明,请参阅参数部分中每个代码的说明。
解决方法
仅当驱动程序验证程序已指示监视一个或多个驱动程序时,才会发生此 bug 检查。 如果不打算使用驱动程序验证程序,则应停用它。 有关详细信息,请参阅驱动程序验证程序中的“如何控制 驱动程序验证程序”。 可以考虑更新或删除导致此问题的驱动程序。
如果你是驱动程序开发人员,请使用通过此 bug 检查获取的信息来修复代码中的 bug。
有关驱动程序验证程序的完整详细信息,请参阅 驱动程序验证程序。
标签: