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 符合性检查选项。 使用 / standard) 的标准设置 (时,将激活 DDI 符合性检查功能。

  • 在命令行

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

    verifier /flags 0x00020000 /driver MyDriver.sys
    

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

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

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

DDI 符合性检查 (其他)

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

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

注意

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

可以使用驱动程序验证程序管理器或 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

OR

verifier /rc 35 /driver MyDriver.sys

其他 IRQL 规则集由以下两个规则组成。

(可选) IrqlNtifsApcPassive

(可选) IrqlIoRtlZwPassive