Bug 检查0xC9:驱动程序 _ 验证 _ 程序 IOMANAGER _ 冲突

驱动程序 _ 验证程序 _ IOMANAGER _ 冲突 bug 检查的值为 0x000000C9。 这是所有驱动程序验证程序 I/O 验证违规的 bug 检查代码。

重要

本主题面向程序员。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

驱动程序 _ 验证 _ 程序 IOMANAGER _ 冲突参数

当驱动程序验证程序处于活动状态并且 选择了 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 类型不等于 IRP_TYPE。

0x04

设备对象的地址

0

0

驱动程序向 IoCallDriver 传递 了无效的设备对象。

0x05

与违犯的驱动程序相关联的设备对象的地址

IoCallDriver之前的 IRQL

IoCallDriver后的 IRQL

在对驱动程序调度例程的调用过程中,IRQL 发生变化。

0x06

IRP 状态

要完成的 IRP 的地址

0

名为 IoCompleteRequest 的驱动程序的状态标记为挂起 (或等于-1) 。

0x07

取消例程的地址

要完成的 IRP 的地址

0

在仍设置了其 cancel 例程的情况下,驱动程序调用 IoCompleteRequest

0x08

设备对象的地址

IRP 主要功能代码

异常状态代码

IoBuildAsynchronousFsdRequest传递的驱动程序无效缓冲区。

0x09

设备对象的地址

I/o 控制代码

异常状态代码

IoBuildDeviceIoControlRequest传递的驱动程序无效缓冲区。

0x10

当前 IRQL

预留

预留

DISPATCH_LEVEL 上调用了 IoCallDriver。

0x11

驱动程序快速 I/O 调度例程地址

在调用驱动程序调度例程之前使用 IRQL

当前 IRQL

IoCallDriver 在 DISPATCH_LEVEL。

0x12

驱动程序调度例程地址

在调用驱动程序调度例程之前使用 IRQL

当前 IRQL

IoCallDriver 在 DISPATCH_LEVEL。

0x0A

设备对象的地址

0

0

驱动程序向 IoInitializeTimer 传递了具有已初始化计时器的设备对象。

0x0C

I/O 状态块的地址

0

0

驱动程序向 IRP 传递了 I/O 状态块,但此块分配在已经过该点后已打开的堆栈上。

0x0D

用户事件对象的地址

0

0

驱动程序将用户事件传递给 IRP,但此事件在堆栈上分配,该堆栈已经过该点。

0x0E

当前 IRQL

IRP 的地址

0

名为 IoCompleteRequest 的驱动程序与 IRQL > DISPATCH_LEVEL。

0x0F

要向其中发送 IRP 的设备对象的地址

指向 IRP 的指针

指向文件对象的指针

驱动程序使用已关闭的文件对象发送了创建请求,或已将其打开取消。

除了上表中提到的错误之外,还有许多 I/o 验证 错误将导致驱动程序验证程序停止系统,但这并不是实际的 bug 检查。

这些错误会导致消息显示在蓝屏、崩溃转储文件和内核调试器中。 这些消息将以不同的方式在每个位置显示。 如果发生这些错误,则不会在蓝屏或调试器中显示十六进制 bug 检查代码0xC9 和 bug 检查字符串驱动程序 _ 验证程序 _ IOMANAGER _ 冲突,尽管它们将出现在故障转储文件中。

在蓝屏上,将显示以下数据:

  • 消息 IO 系统验证错误

  • 消息 WDM 驱动程序错误 XXX,其中 XXX 是表示特定错误的十六进制代码。 (参阅下表,了解 i/o 错误代码及其含义的列表 )

  • 导致错误的驱动程序的名称。

  • 通常,驱动程序代码中检测到错误的地址 (参数 2) 。

如果已启用内核模式故障转储,则故障转储文件中将显示以下信息:

  • 消息 错误检查 0xC9 (DRIVER _ VERIFIER _ IOMANAGER _ 冲突)

  • 十六进制 i/o 错误代码。 (参阅下表,了解 i/o 错误代码及其含义的列表 )

  • 通常,驱动程序代码中检测到错误的地址 (参数 2) 。

如果将内核调试器附加到导致此冲突的系统,则会将以下信息发送到调试器:

  • 消息 WDM 驱动程序错误,以及对错误严重性的评估。

  • 导致错误的驱动程序的名称。

  • 说明导致此错误的原因的描述性字符串。 通常会传递其他信息,例如指向 IRP 的指针或指向设备对象或 IRQL 信息的指针。 (请参阅下表,了解这些描述性字符串的列表以及指定了哪些附加信息。)

  • 进一步操作查询。 可能的响应包括 b ( break) 、i ( ignore ) 、z (zap ) 、r (remove) 或 d (disable) 。 指示操作系统继续可让你查看在未发生此错误时"下一行"会发生什么情况。 当然,这通常会导致额外的 bug 检查。 "zap"选项实际上会删除导致发现此错误的断点。

注意 无法这样忽略任何其他 bug 检查。 只能忽略此类 I/O 验证 错误,并且即使这些错误也只能在附加内核调试器时忽略。

下表列出了可能会出现的 I/O 验证错误。

I/O 错误代码 严重性 错误消息的原因

0x200

未知

此代码涵盖所有未知的 I/O 验证 错误。

0x201

错误

当驱动程序堆栈中存在另一个设备时,设备正在自行删除。 这可能是因为调用方忘记先调用 IoDetachDevice, 或者较低驱动程序可能错误地删除了自身。

参数 2 - 检测到错误的驱动程序代码中的地址。

0x202

错误

驱动程序已尝试从未附加到任何内容的设备对象中分离。 如果在同一设备对象上调用了两次分离,则可能会发生这种情况。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - 设备对象地址。

0x203

错误

驱动程序调用了 IoCallDriver, 但没有将 IRP 中的取消例程设置为 NULL

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x204

错误

调用方已作为设备对象传入 NULL。 这一点很严重。

参数 2 - 保留

参数 3 - 保留

0x205

错误

调用方正在转发当前在其下排队的 IRP。 在此驱动程序中返回STATUS_PENDING的 IRP 的代码似乎已损坏。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x206

错误

调用方错误地将 IRP (控制字段转发到了未归零) 。 驱动程序应使用 IoCopyCurrentIrpStackLocationToNextIoSkipCurrentIrpStackLocation

参数 2-保留

参数 3-保留

0x207

错误

调用方已手动复制堆栈,并且无意中复制了上层的完成例程。 驱动程序应使用 IoCopyCurrentIrpStackLocationToNext

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x208

错误

此 IRP 即将用尽堆栈位置。 有人可能从另一堆栈转发了此 IRP。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x209

错误

调用方正在完成当前在其下排队的 IRP。 在此驱动程序中返回STATUS_PENDING的 IRP 的代码似乎已损坏。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x20A

错误

IoFreeIrp 的调用方正在释放仍在使用的 IRP。

参数 2 - 保留

参数 3 - 保留

0x20B

错误

IoFreeIrp 的调用方正在释放仍在使用的 IRP。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x20C

错误

IoFreeIrp 的调用方正在释放仍针对线程排队的 IRP。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x20D

错误

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。 调用方可能会将 Irp 发送到 PDO,而不是发送到 IoAttachDeviceToDeviceStack返回的设备。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x212

非致命错误

调用方具有放入回收站或未正确复制 IRP 的堆栈。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x213

非致命错误

调用方已更改其不理解的 IRP 的 "状态" 字段。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x214

非致命错误

调用方已更改它无法理解的 IRP 的信息字段。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x215

非致命错误

正在向下传递STATUS_NOT_SUPPORTED的未成功IRP_MJ_PNP 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 状态。 故障电源 Irp 必须已完成。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x21A

非致命错误

之前设置的 IRP_MJ_POWER 状态已转换为 STATUS_NOT_SUPPORTED。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x21B

非致命错误

驱动程序返回了可疑状态。 这可能是由于驱动程序中的变量未初始化。

参数 3-IRP 地址。

0x21C

警告

调用方已复制 IRP 堆栈,但未设置完成例程。 这是低效的--请改用 IoSkipCurrentIrpStackLocation

参数 2-保留

参数 3-保留

0x21D

错误

在收到删除 IRP 后,IRP 调度处理程序未正确地从其下的堆栈中分离。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-设备对象地址。

0x21E

错误

IRP 调度处理程序在收到删除 IRP 时未正确删除其设备对象。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 设备对象地址。

0x21F

非致命错误

驱动程序尚未为所需的 IRP 主要功能填写调度例程。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x220

非致命错误

IRP_MJ_SYSTEM_CONTROL ProviderId 外的其他用户已完成。 此 IRP 应已提前完成,或应已向下传递。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - ProviderId。

0x221

错误

PDO 的 IRP 调度处理程序已删除其设备对象,但在总线关系查询中未报告硬件缺失。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 设备对象地址。

0x222

错误

当 PDO 仍处于活动状态时,在收到删除 IRP 时,总线筛选器的 IRP 调度处理程序已分离。 总线筛选器必须在 FastIoDetach 回调中 清除。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 设备对象地址。

0x223

错误

总线筛选器的 IRP 调度处理程序已删除其设备对象,但 PDO 仍然存在。 总线筛选器必须在 FastIoDetach 回调中 清除。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 设备对象地址。

0x224

错误

IRP 调度处理程序返回的状态与 IRP 的 IoStatus.Status 字段不一致。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 预期状态代码。

0x225

非致命错误

IRP 调度处理程序返回 (0xFFFFFFFF) 中非法的状态。 这可能是由于未初始化的堆栈变量。 若要调试此错误,请使用 ln (列出包含指定地址的 最接近符号) 命令。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-状态代码。

0x226

错误

IRP 调度处理程序已返回,无需关闭或完成此 IRP,或者有人忘记了返回 STATUS_PENDING。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x227

错误

IRP 完成例程位于可分页的代码中。 (不允许这样做。 )

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x228

非致命错误

如果在传递给它的 IRP 中设置了 PendingRe一字段 ,则驱动程序的完成例程未将 IRP 标记为挂起。 这可能会导致 Windows 挂起,尤其是在堆栈返回错误时。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x229

错误

为堆栈中较低层驱动程序当前正在处理的 IRP 设置了取消例程,可能会堆积其取消例程。

参数 2 - 保留。

参数 3 - 保留。

0x22A

非致命错误

PDO (对象) 未响应所需的 IRP。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x22B

非致命错误

PDO (对象) 忘记使用 TargetDeviceRelation 查询的 PDO 填写设备关系列表。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x22C

错误

实现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。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x230

非致命错误

调用方已完成IRP_MJ_POWER,而不是向下传递它。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x231

错误

调用方已完成成功IRP_MJ_POWER而不是向下传递。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x232

非致命错误

调用方已完成未更改IRP_MJ_POWER (而不是向下传递 IRP) ,或者非 PDO 已使用非法值 STATUS_NOT_SUPPORTED。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x233

非致命错误

查询功能 IRP 中查询功能结构的版本字段未正确初始化。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x234

非致命错误

查询功能 IRP 的 "大小" 字段未正确初始化。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x235

非致命错误

查询功能 IRP 的 "地址" 字段未正确初始化为-1。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x236

非致命错误

查询功能 IRP 中查询功能结构的 "UI 编号" 字段未正确初始化为-1。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

0x237

错误

驱动程序已发送 IRP,该 IRP 仅限系统使用。

参数 2-保留。

参数 3-已保留。

0x238

警告

IoInitializeIrp的调用方传递了使用IoAllocateIrp分配的 IRP。 这是非法的、不必要的,会对正常使用的性能产生负面影响。 如果正在回收此 IRP,请参阅此 IRP 中的 IoReuseIrp Windows 驱动程序工具包 (WDK) 。

参数 2 - 保留。

参数 3 - 保留。

0x239

警告

IoCompleteRequest的调用方正在完成从未通过调用IoCallDriverPoCallDriver转发的 IRP。 这可能是一个 bug。

参数 2 - 保留。

参数 3 - 保留。

0x23A

错误

驱动程序已在此主要代码非法的 IRQL 上转发 IRP。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

0x23B

非致命错误

调用方已更改它无法理解的 IRP 的状态字段。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

下表列出了可能出现的其他 I/o 验证 错误。 当激活增强的 I/o 验证 时,将出现这些错误。 有关详细信息,请参阅 增强型 I/o 验证

I/o 错误代码 严重性 错误消息的原因

0x23C

错误

驱动程序已完成 IRP,但没有将 IRP 中的 "取消" 例程设置为 NULL

参数 2-保留。

参数 3-已保留。

0x23D

非致命错误

驱动程序已 STATUS_PENDING 返回,但未通过调用 将 IRP 标记为挂起。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-状态代码。

0x23E

非致命错误

驱动程序已将 IRP 标记为 "已挂起",但未返回 STATUS_PENDING。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-状态代码。

0x23F

错误

驱动程序没有从它所附加到的堆栈中继承 DO_POWER_PAGABLE 位。

参数 2-保留。

参数 3-已保留。

0x240

错误

驱动程序正在尝试删除已通过之前对 IoDeleteDevice的调用删除的设备对象。

参数 2-检测到错误的驱动程序代码中的地址。

参数 2-保留。

参数 3-已保留。

0x241

错误

在意外删除 IRP 期间,驱动程序已分离其设备对象。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-设备对象地址。

0x242

错误

驱动程序已在意外删除 IRP 期间删除了其设备对象。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-设备对象地址。

0x243

错误

驱动程序未能清除 AddDevice结尾的 DO_DEVICE_INITIALIZING 标志。

参数 2-保留。

参数 3-已保留。

参数 4-

0x244

错误

驱动程序没有从其附加到的设备对象复制 DO_BUFFERED_IO 或 DO_DIRECT_IO 标志。

参数 2-保留。

参数 3-已保留。

0x245

错误

驱动程序同时设置了 DO_BUFFERED_IO 和 DO_DIRECT_IO 标志。 这些标志互相排斥。

参数 2-保留。

参数 3-已保留。

0x246

错误

驱动程序无法从其附加到的设备对象复制 DeviceType 字段。

参数 2-保留。

参数 3-已保留。

0x247

错误

参数 2-保留。

参数 3-已保留。

驱动程序失败,无法合法地失败的 IRP。

0x248

错误

驱动程序已向设备关系查询添加了不是 PDO 的设备对象。

参数 2-检测到错误的驱动程序代码中的地址。

参数 3-IRP 地址。

参数 4-设备对象地址。

0x249

非致命错误

驱动程序已枚举返回相同设备 D 的两个子 PDU。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - 第一个设备对象地址。

参数 4 - 第二个设备对象地址。

0x24A

错误

驱动程序错误地调用了 IRQL 不等于文件 I/O PASSIVE_LEVEL。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - 保留。

参数 4 - 保留。

0x24B

错误

驱动程序已完成 TargetDeviceRelation IRP_MN_QUERY_DEVICE_RELATIONS类型的请求,但未正确填写请求或将 IRP 转发到基础硬件堆栈。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - 设备对象地址。

0x24C

非致命错误

驱动程序已返回 STATUS_PENDING但未通过调用 IoMarkIrpPending将 IRP 标记为挂起。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 状态代码。

0x24D

错误

驱动程序将无效的设备对象传递给需要 PDO 的函数。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 设备对象地址。

0x300

非致命错误

驱动程序已返回可疑状态。 这可能是由于驱动程序中未初始化的变量 bug。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - 可疑状态代码。

0x301

非致命错误

驱动程序在 IRQL 上转发了 IRP > DISPATCH_LEVEL。

参数 2 - 检测到错误的驱动程序代码中的地址。

参数 3 - IRP 地址。

参数 4 - IRQL 值不正确

0x302

非致命错误

驱动程序在 IRQL 上转发了 IRP > = APC_LEVEL。

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。

有关驱动程序验证程序的完整详细信息,请参阅 驱动程序验证程序