DDI 合规性检查

DDI 相容性检查选项确定驱动程序是否正确与 Windows 操作系统内核交互。

注意 从 Windows 8 开始可以使用此选项。 从 Windows 8.1 开始,你可以通过选择 "激活 DDI 相容性检查" (其他) 选项来测试其他规则。

DDI 合规性检查

DDI 相容性检查选项应用 (DDI) 使用规则的相同设备驱动程序接口, 静态驱动程序验证 器使用这些规则来验证驱动程序是否在函数所需的 IRQL 上发出函数调用,或正确获取和释放旋转锁。

如果此选项处于活动状态,并且驱动程序验证器检测到该驱动程序违反了某个 DDI 符合性规则,则驱动程序验证程序问题会检查 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)

旋转锁 (Windows 8.1)

这两个规则当前是可选的,但建议这样做。

(可选) IrqlNtifsApcPassive

(可选) IrqlIoRtlZwPassive

激活 DDI 相容性检查选项

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

  • 在命令行中

    在命令行中,DDI 相容性检查由 verifier/flags 0x00020000 (位 17) 表示。 若要激活 DDI 相容性检查,请使用0x00020000 的标志值或将0x00020000 添加到标志值。 例如:

    verifier /flags 0x00020000 /driver MyDriver.sys
    

    此功能将在下一次启动后处于活动状态。

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

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

DDI 相容性检查 (额外)

从 Windows 8.1 开始, DDI 相容性检查 (其他) 选项 选项提供其他规则来确定驱动程序是否与 Windows 操作系统内核正确交互。 选择 " DDI 相容性检查" (额外的) "选项 时,将测试以下规则:

(其他) 选项激活 DDI 相容性检查

备注

从 Windows 10 预览体验版本19042及更高版本开始,此检查已弃用

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

  • 在命令行中

    在命令行中,DDI 相容性检查由 verifier/flags 0x00080000 (位 19) 表示。 若要激活 额外) (的 DDI 相容性检查,请使用0x00080000 的标志值或将0x00080000 添加到标志值。 例如:

    verifier /flags 0x00080000 /driver MyDriver.sys
    

    此功能将在下一次启动后处于活动状态。

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

    1. 若要启动驱动程序验证程序管理器,请在命令提示符窗口中键入 Verifier
    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