IrpProcessing 规则集 (KMDF)

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

本节内容

主题 说明

FwdIrpToIoQueueValid

规则 FwdIrpToIoQueueValid 规定,驱动程序使用 WdfDeviceWdmDispatchIrpToIoQueue 方法从 EvtDeviceWdmIrpDispatch 回调或 EvtDeviceWdmIrpPreprocess 回调向 I/O 队列发送 IRP。

SetCompletionRoutineFromDispatch

SetCompletionRoutineFromDispatch 规则验证驱动程序是否从其 EvtDeviceWdmIrpDispatch 回调函数中指定了 IRP 的完成例程。

MiniportOnlyWdmDevice

MiniportOnlyWdmDevice 规则规定,WDF 驱动程序不应使用 IoCreateDeviceIoCreateDeviceSecure 函数来创建裸 WDM 设备对象。 如果有人试图向 WDM 设备发送 IRP,这将导致计算机崩溃。 这是因为设备的 IRP 调度项设置为 WDF 特定项,但框架尚未创建 WDF 设备。 不过,微型端口驱动程序可以使用 DDI,因为没有为它们设置驱动程序调度入口点。

选择 IrpProcessing 规则集

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

  2. 单击规则选项卡。在规则集下,选择 IrpProcessing

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

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

    更多信息,请参见使用静态驱动程序验证程序查找驱动程序中的缺陷静态驱动程序验证程序命令 (MSBuild)