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 (starting in 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 (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

OR

verifier /rc 35 /driver MyDriver.sys

額外的 IRQL 規則集包含下列兩個規則。

(選擇性) IrqlNtifsApcPassive

(選擇性) IrqlIoRtlZwPassive