IrpProcessing 规则集 (KMDF)

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

在本节中

主题 说明

FwdIrpToIoQueueValid

规则 FwdIrpToIoQueueValid 指定驱动程序使用来自 EvtDeviceWdmIrpDispatch 回调或 EvtDeviceWdmIrpPreprocess 回调的 WdfDeviceWdmDispatch 方法将 IRP 发送到 I/O 队列。

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。 例如:

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

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