标记QueuedIrps 规则 (wdm)

MarkQueuedIrps 规则指定驱动程序为 IRP 调用 IoMarkIrpPending,该 IRP 仅在持有旋转锁时需要进一步处理。 仅当驱动程序将 IRP 添加到驱动程序管理的队列时,此规则才适用。

具体而言,仅当发生以下 所有 事件时,驱动程序才会违反此规则。

驱动程序应仅在持有旋转锁时为排队的 IRP 调用 IoMarkIrpPending 。 否则,IRP 可能会取消排队,由另一个驱动程序例程完成,并在调用 IoMarkIrpPending 之前由系统释放,从而导致崩溃。

有关详细信息,请参阅 同步 IRP 取消

驱动程序模型:WDM

如何测试

编译时

运行 静态驱动程序验证程序 并指定 MarkingQueuedIrps 规则。

使用以下步骤运行代码分析:
  1. 准备代码 (使用角色类型声明) 。
  2. 运行静态驱动程序验证程序。
  3. 查看和分析结果。

有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷

适用于

InsertHeadListIoCallDriverIoMarkIrpPendingKeAcquireInStackQueuedSpinLockKeAcquireSpinLockKeInsertByKeyDeviceQueueKeInsertDeviceQueueKeInsertQueueDpcKeReleaseInStackQueuedSpinLockKeReleaseSpinLockPoCallDriverRemoveHeadList