IrpPending 规则集 (WDM)

使用这些规则验证驱动程序是否正确将 I/O 请求数据包 (IRP) 。

在本节中

主题 说明

MarkDevicePower

MarkDevicePower 规则指定将IRP_MN_SET_POWER的 SystemPowerState IRP 设置为 S0 的IRP_MJ_POWER。

MarkingInterlockedQueuedIrps

MarkingInterlockedQueuedIrps 规则指定驱动程序在以互锁方式将 IRP 排队以供进一步处理之前,正确将 IRP 标记为挂起。

MarkingQueuedIrps

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

MarkIrpPending

MarkIrpPending 规则指定每当驱动程序调度例程调用 IoMarkIrpPending 时,驱动程序在调度例程结束时返回STATUS_PENDING。 有关免费规范,请参阅 MarkIrpPending2

MarkIrpPending2

MarkIrpPending2 规则指定,如果调度例程返回STATUS_PENDING,它已调用 IoMarkIrpPending 或将 IRP 传递给较低的驱动程序。 有关免费规范,请参阅 MarkIrpPending

MarkPower

MarkPower 规则指定将IRP_MN_SET_POWER设置为 S0 的 SystemPowerState IRP 的IRP_MJ_POWER。 此规则仅适用于 FDO 和 FIDO 驱动程序。

MarkPowerDown

MarkPowerDown 规则 IRP_MJ_POWER指定 systemPowerState IRP 的IRP_MN_SET_POWER从 s0 到 [S1...S5] 已吊坠。

MarkQueryRelations

MarkQueryRelations 规则指定驱动程序应IRP_MN_QUERY_DEVICE_RELATIONS IRP。

MarkStartDevice

MarkStartDevice 规则指定驱动程序正确IRP_MN_START_DEVICE IRP。 此规则仅适用于 FDO 和 FIDO 驱动程序。

PendedCompletedRequest

PendedCompletedRequest 规则指定,如果驱动程序在传入 IRP 上调用了 IoCompleteRequest,则驱动程序的调度例程不会在 IRP 上返回STATUS_PENDING。

PendedCompletedRequest2

PendedCompletedRequest2 规则指定在调用 IoCallDriverPoCallDriver 后需要等待,因为调度例程可以完成挂起的 IRP。

PendedCompletedRequest3

PendedCompletedRequest3 规则指定挂起的 IRP 不应通过调用 IoCompleteRequest 来完成。

PendedCompletedRequestEx

PendedCompletedRequestEx 规则指定驱动程序不应为挂起的 IRP 调用 IoCompleteRequest

StartDeviceWait

StartDeviceWait 规则指定驱动程序不应在启动设备 IRP 的上下文中调用 KeWaitForSingleObject

StartDeviceWait2

StartDeviceWait2 规则指定驱动程序不应在启动设备 IRP 的上下文中调用 KeWaitForSingleObject

StartDeviceWait3

StartDeviceWait3 规则指定驱动程序不应在启动设备 IRP 的上下文中调用 KeWaitForSingleObject

StartDeviceWait4

StartDeviceWait4 规则指定驱动程序不应在启动设备 IRP 的上下文中调用 KeWaitForSingleObject

选择 IrpPending 规则集

  1. 在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”

  2. 单击“ 规则 ”选项卡。在 “规则集”下,选择“ IrpPending”。

    若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 IrpPending.sdv。 例如:

    msbuild /t:sdv /p:Inputs="/check:IrpPending.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

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