DDI 合规性检查

设备驱动程序接口(DDI)符合性检查选项用于确定驱动程序是否正确与 Windows 操作系统内核进行交互。

注意 此选项从 Windows 8 开始可用。 从 Windows 8.1 开始,可以通过选择“ 激活 DDI 符合性检查”(其他)选项来测试其他规则。

DDI 合规性检查

DDI 符合性检查选项采用与静态驱动程序验证程序相同的设备驱动程序接口(DDI)使用规则,检查驱动程序是否在函数所需的 IRQL 上进行函数调用,并确保正确获取和释放自旋锁。

如果此选项处于活动状态,驱动程序验证程序检测到驱动程序违反了 DDI 符合性规则之一,驱动程序验证程序会发出 bug 检查0xC4(参数 1 等于特定符合性规则的标识符)。

选择 DDI 符合性检查选项时,将包括以下规则。

GuardedRegions (从 Windows 8.1 开始)

IoSetCompletionExCompleteIrp (从 Windows 8.1 开始)

IrqlApcLte

IrqlDispatch

IrqlExAllocatePool

IrqlExApcLte1

IrqlExApcLte2

IrqlExApcLte3

IrqlExPassive

IrqlIoApcLte

IrqlIoDispatch

IrqlIoPassive1

IrqlIoPassive2

IrqlIoPassive3

IrqlIoPassive4

IrqlIoPassive5

IrqlKeApcLte1

IrqlKeApcLte2

IrqlKeDispatchLte

IrqlKeReleaseSpinLock

IrqlKeSetEvent

IrqlMmApcLte

IrqlMmDispatch

IrqlObPassive

IrqlPsPassive

IrqlReturn (从 Windows 8.1 开始)

IrqlRtlPassive

IrqlZwPassive

NdisOidComplete (从 Windows 8.1 开始)

NdisOidDoubleComplete (从 Windows 8.1 开始)

PnpRemove (从 Windows 8.1 开始)

RequestedPowerIrp (从 Windows 8.1 开始)

QueuedSpinLock (从 Windows 8.1 开始)

SpinLock (从 Windows 8.1 开始)

这两个规则目前是可选的,但建议使用。

(可选) IrqlNtifsApcPassive

(可选) IrqlIoRtlZwPassive

激活 DDI 符合性检查选项

您可以使用驱动验证管理器或 Verifier.exe 命令行为一个或多个驱动程序激活 DDI 符合性检查功能。 有关详细信息,请参阅 “选择驱动程序验证程序选项”。 必须重新启动计算机才能激活或停用 DDI 符合性检查选项。 使用标准设置(/标准)时,将激活 DDI 符合性检查功能。

  • 在命令行

    在命令行中,DDI 符合性检查由 验证程序 /flags 0x00020000 (Bit 17) 表示。 若要激活 DDI 符合性检查,请使用标志值0x00020000或向标志值添加0x00020000。 例如:

    verifier /flags 0x00020000 /driver MyDriver.sys
    

    下一次启动后,该功能将处于活动状态。

  • 使用驱动程序验证管理器

    1. 启动驱动程序验证程序管理器。 在命令提示符窗口中键入 验证程序
    2. 选择 “创建自定义设置”(面向代码开发人员), 然后单击“ 下一步”。
    3. 从完整列表中选择单个设置
    4. 勾选DDI 符合性检查
    5. 重启电脑

DDI 符合性检查(附加)

从 Windows 8.1 开始, DDI 符合性检查(其他)选项 提供了其他规则,用于确定驱动程序是否与 Windows作系统内核正确交互。 选择 DDI 符合性检查(其他)选项时,将测试以下规则:

激活 DDI 合规性检查(附加)选项

注释

从 Windows 10 内部版本 19042 及更高版本开始,此检查已弃用

可以使用驱动程序验证管理器或 Verifier.exe 命令行为一个或多个驱动程序激活 DDI 符合性检查(其他) 规则。 有关详细信息,请参阅 “选择驱动程序验证程序选项”。 必须重新启动计算机才能激活或停用 DDI 符合性检查(其他) 选项。

  • 在命令行

    在命令行中,DDI 符合性检查由 验证程序 /flags 0x00080000 (Bit 19) 表示。 若要激活 DDI 符合性检查(其他),请使用0x00080000的标志值或向标志值添加0x00080000。 例如:

    verifier /flags 0x00080000 /driver MyDriver.sys
    

    下一次启动后,该功能将处于活动状态。

  • 使用驱动程序验证管理器

    1. 若要启动驱动程序验证程序管理器,请在命令提示符窗口中键入 验证程序
    2. 选择 “创建自定义设置”(面向代码开发人员), 然后单击“ 下一步”。
    3. 从完整列表中选择单个设置
    4. 选择(检查)DDI 符合性检查(其他)。
    5. 重启电脑

激活 DDI 符合性检查(其他 IRQL) 选项

可以使用 Verifier.exe 命令行来为一个或多个驱动程序激活 DDI 符合性的附加 IRQL 规则。 有关详细信息,请参阅 “选择驱动程序验证程序选项”。 必须重新启动计算机才能激活或停用 DDI 符合性附加 IRQL 规则。

在命令行中,DDI 符合性附加 IRQL 检查由规则类值 35 表示。 例如:

verifier /ruleclasses 35 /driver MyDriver.sys

或者

verifier /rc 35 /driver MyDriver.sys

额外的 IRQL 规则集由以下两个规则组成。

(可选) IrqlNtifsApcPassive

(可选) IrqlIoRtlZwPassive