次の方法で共有


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

SpinLock (Windows 8.1 以降)

現在、これら 2 つの規則は省略可能ですが、推奨されます。

(省略可能) IrqlNtifsApcPassive

(省略可能) IrqlIoRtlZwPassive

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

ドライバー検証ツール マネージャーまたは 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 コンプライアンス チェック (追加) オプションのアクティブ化

このチェックは、Windows 10 ビルド 19042 以降では非推奨です

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

  • コマンド ラインで

    コマンド ラインでは、DDI コンプライアンス チェックは 検証ツール /flags 0x00080000 (ビット 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 コンプライアンスの追加 IRQL チェックは、ルール クラス値 35 で表されます。 例えば次が挙げられます。

verifier /ruleclasses 35 /driver MyDriver.sys

または

verifier /rc 35 /driver MyDriver.sys

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

(省略可能) IrqlNtifsApcPassive

(省略可能) IrqlIoRtlZwPassive