警告规则集 (WDM)

使用这些规则验证驱动程序是否可以在各种上下文中正确处理 IRP,并遵循 Microsoft 建议的最佳做法。

在本节中

主题 说明

CheckDeviceObjectFlags

CheckDeviceObjectFlags 规则指定总线驱动程序必须检查一致地为 FDO 和子 PDO 设置DO_POWER_PAGABLE和DO_POWER_INRUSH的设备对象标志。 此规则仅适用于总线驱动程序。

CompletionEventChecking

CompletionEventChecking 规则指定驱动程序不会在同一 IRP 的完成例程中调用 IoMarkIrpPendingKeSetEvent

DeleteDevice

DeleteDevice 规则指定驱动程序不应依赖 I/O 管理器或 PnP 管理器在调用 IoDeleteDevice 后使 DeviceObject 保持活动状态。

MultRemoveLock

MultRemoveLock 规则验证调用 IoAcquireRemoveLock 时是否只有一个唯一的 Remove Lock。 这是一个警告规则。

PagedCode

PagedCode 规则指定驱动程序仅在 IRQL <= APC_LEVEL执行时调用PAGED_CODE宏。

PagedCodeAtPowerTrans

PagedCodeAtPowerTrans 规则指定驱动程序在响应系统IRP_MJ_POWER Irp (IRP_MN_SET_POWER) 和设备IRP_MJ_POWER Irp (IRP_MN_SET_POWER) 时不应调用 PAGED_CODE。

ReservedDDIs

ReservedDDI 规则验证驱动程序是否不调用任何保留函数。

选择警告规则集

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

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

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

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

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