DDI 準拠の検査

デバイス ドライバ インターフェイス (DDI) コンプライアンス チェック オプションは、ドライバーが Windows オペレーティング システムのカーネルと適切にやり取りしているかどうかを判定します。

注: このオプションは、Windows 8 以降で使用できます。 Windows 8.1 以降では、DDI コンプライアンス チェックのアクティブ化 (追加) オプション 選択して、追加の規則をテストできます。

DDI 準拠の検査

DDI コンプライアンス チェック オプションは、デバイス ドライバー インターフェイス (DDI) の使用ルールと同じルール を適用し、静的ドライバー検証ツール が、ドライバーが関数に必要な IRQL で関数呼び出しを行うか、スピンロックを正しく取得および解放するかを検証します。

このオプションをアクティブ化していると、ドライバー検証ツールは、ドライバーが DDIコンプライアンスルールのいずれかに違反していることを検出した場合、ドライバー検証ツールはバグ チェック 0xC4 を発行します (パラメーター 1 は、特定のコンプライアンス ルールの ID と同じ)。

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 以降)

現在、これら 2 つのルールは任意ですが、推奨されます。

(オプション) IrqlNtifsApcPassive

(オプション) IrqlIoRtlZwPassive

DDI コンプライアンス チェック オプションのアクティブ化

Driver Verifier Manager または Verifier.exe コマンド ラインを使用して、1 つ以上のドライバーに対して DDI コンプライアンス チェック機能をアクティブ化できます。 詳細については、 「ドライバー検証ツール オプションの選択」を参照してください 。 DDI コンプライアンス チェック オプションをアクティブ化または非アクティブ化するには、コンピューターを再起動する必要があります。 標準設定 (/standard) を使用すると、DDI コンプライアンス チェック機能がアクティブになります。

  • コマンド ラインで

    コマンド ラインでは、DDI コンプライアンス チェックは検証ツール /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 コンプライアンス チェック (追加) オプションのアクティブ化

Note

このチェックは、Windows 10 ビルド 19042 以降では非推奨になりました。

Driver Verifier Manager または Verifier.exe コマンド ラインを使用して、1 つ以上のドライバーに対して DDI コンプライアンス チェック (追加) 機能をアクティブ化できます。 詳細については、 「ドライバー検証ツール オプションの選択」を参照してください 。 コンピューターを再起動することで、 DDI コンプライアンス チェック (追加) オプションをアクティブ化または非アクティブ化できます。

  • コマンド ラインで

    コマンド ラインでは、DDI コンプライアンス チェックは検証ツール /flags0x00080000 (ビット 19) で 表されます。 DDI コンプライアンスチェック (追加) をアクティブにするには、0x00080000のフラグ値を使用するか、フラグ値に0x00080000を追加します。 次に例を示します。

    verifier /flags 0x00080000 /driver MyDriver.sys
    

    この機能は次回の起動後に有効になります。

  • ドライバー検証マネージャーの使用

    1. ドライバーの検証ツール マネージャーを起動するには、コマンド プロンプト ウィンドウで「 Verifier 」と入力します。
    2. 「カスタム設定の作成 (コード開発者用)」 を選択し、 「次へ」をクリックします。
    3. 選択 全リストから [個々の設定を選択] を選択します
    4. (チェック) DDI コンプライアンス チェック (追加) を選択します。
    5. コンピューターを再起動します。

DDI コンプライアンス チェック (追加 IRQL) オプションのアクティブ化

Verifier.exe コマンド ラインを使用して、1 つ以上のドライバーの DDI コンプライアンス - 追加の IRQL 規則をアクティブ化できます。 詳細については、 「ドライバー検証ツール オプションの選択」を参照してください 。 DDI コンプライアンス - 追加 IRQL 規則をアクティブ化または非アクティブ化するには、コンピューターを再起動する必要があります。

コマンド ラインでは、DDI Compliance - 追加 IRQL チェック はルール クラス値 35 で表されます。 次に例を示します。

verifier /ruleclasses 35 /driver MyDriver.sys

OR

verifier /rc 35 /driver MyDriver.sys

追加の IRQL 規則セットは、次の 2 つの規則で構成されます。

(オプション) IrqlNtifsApcPassive

(オプション) IrqlIoRtlZwPassive