次の方法で共有


ドライバー検証ツール

ドライバーの検証ツールは、Windows カーネルモード ドライバーとグラフィックス ドライバーを監視して、無効な関数呼び出しやシステムを破損する可能性があるアクションを検出します。 ドライバーの検証ツールを使用すると、Windows ドライバーに対してさまざまな負荷やテストを実施し、不適切な動作を見つけることができます。 実行するテストを構成できます。これにより、ドライバーに非常に高い負荷をかけたり、より効率的なテストを行ったりすることができます。 また、ドライバーの検証ツールは、複数のドライバーで同時に実行することも、一度に 1 つのドライバーに対して実行することもできます。

注意事項

  • ドライバー検証ツールを実行すると、コンピューターがクラッシュする可能性があります。
  • テストとデバッグに使用するコンピューターでのみドライバー検証ツールを実行します。
  • ドライバーの検証ツールを使用するユーザーは、コンピューターの Administrators グループに属している必要があります。

ドライバー検証ツールはどこでダウンロードできますか?

Windows のほとんどのバージョンは、%WinDir%\system32\ as Verifier.exeに含まれているため、ドライバー検証ツールをダウンロードする必要はありません。 (ドライバー検証ツールは Windows 10 S に含まれていないため、代わりに Windows 10 でドライバーの動作をテストすることをお勧めします)。ドライバー検証ツールは、ダウンロード パッケージとして個別に配布されません。

Windows 10 および以前のバージョンの Windows のドライバー検証ツールの変更については、「 ドライバー検証ツール: 新機能」を参照してください。

ドライバー検証ツールを使用する場合

ドライバーの開発とテストを通じてドライバー検証ツールを実行します。 具体的には、次の目的でドライバー検証ツールを使用します。

  • 開発サイクルの早い段階で問題を見つけるには、修正が簡単でコストが削減されます。

  • テストの失敗とコンピューターのクラッシュのトラブルシューティングとデバッグを行う場合。

  • WDK、Visual Studio、および Windows ハードウェア ラボ キット (Windows HLK) または Windows ハードウェア 認定キット (Windows 8.1 の場合) からテスト用のドライバーを展開するときの動作を監視するため。 ドライバーのテストの詳細については、「 ドライバーのテスト」を参照してください。

Von Bedeutung

Windows ハードウェア互換性プログラムには、クライアントおよびサーバー オペレーティング システム上の静的ツール ロゴ (STL) テスト用の CodeQL が必要です。 古い製品では、引き続き SDV と CA のサポートを維持しています。 パートナーは、静的ツール ロゴ テストの CodeQL 要件を確認することを強くお勧めします。 CodeQL の使用方法の詳細については、「 CodeQL と静的ツールのロゴ テスト」を参照してください。

ドライバー検証ツールを起動する方法

テスト コンピューター、またはテストとデバッグを行っているコンピューターでのみ、ドライバー検証ツールを実行します。 ドライバー検証ツールの利点を最大限に活用するには、カーネル デバッガーを使用してテスト コンピューターに接続します。 デバッグ ツールの詳細については、「 Windows 用デバッグ ツール (WinDbg、KD、CDB、NTSD)」を参照してください。

  1. [管理者として実行] を選択してコマンド プロンプト ウィンドウを起動し、「検証ツール」と入力してドライバー検証ツール マネージャーを開きます。

  2. [ 標準設定の作成 ] (既定のタスク) を選択し、[ 次へ] を選択します。

    [ カスタム設定の作成 ] を選択して、定義済みの設定から選択したり、個々のオプションを選択したりすることもできます。 詳細については、「 ドライバー検証ツールのオプションとルール クラス」およびドライバー検証ツールのオプションの選択」を参照してください

  3. [ 確認するドライバーの選択] で、次の表で説明する選択スキームのいずれかを選択します。

    選択肢 推奨される使用方法
    署名されていないドライバーを自動的に選択する

    署名されたドライバーを必要としないバージョンの Windows を実行しているコンピューターでテストする場合に便利です。

    古いバージョンの Windows 用にビルドされたドライバーを自動的に選択する

    新しいバージョンの Windows とのドライバーの互換性をテストする場合に便利です。

    このコンピューターにインストールされているすべてのドライバーを自動的に選択する

    システムでテストされるドライバーの数に関する最大カバレッジを提供します。 このオプションは、ドライバーがシステム上の他のデバイスまたはドライバーと対話できるテスト シナリオに役立ちます。

    このオプションでは、 特別なプール と一部のリソース追跡に使用できるリソースを使い果たすこともできます。 すべてのドライバーをテストすると、システムのパフォーマンスにも悪影響を及ぼす可能性があります。

    一覧からドライバー名を選択する

    ほとんどの場合、テストするドライバーを指定する必要があります。

    デバイス スタック内のすべてのドライバーを選択すると、I/O 要求パケット (IRP) がスタック内の各ドライバー間で渡されるため、[ 拡張 I/O 検証 ] オプションを使用してオブジェクトを追跡し、コンプライアンスを確認できます。これにより、エラーが検出されたときにより詳細なレベルを提供できます。

    システムまたはドライバーのパフォーマンス メトリックを測定するテスト シナリオを実行している場合、またはメモリの破損やリソース追跡の問題 (デッドロックやミューテックスなど) を検出するために使用できるリソースの最大数を割り当てる場合は、1 つのドライバーを選択します。 特別なプールI/O 検証オプションは、一度に 1 つのドライバーで使用する場合により効果的です。

  4. [ 一覧からドライバー名を選択] を選択した場合は、[ 次へ] を選択し、1 つ以上の特定のドライバーを選択します。

  5. [ 完了] を選択し、コンピューターを再起動します。

Windows バージョン 20150 から 25126 でドライバー検証ツールを使用する場合、 ntoskrnl を選択すると、無効な状態エラーが発生する可能性があります。
この問題を回避するには、 ntoskrnl の選択を解除するか、ビルド 25126 の後に Windows のバージョンにアップグレードします。

コマンド プロンプトでドライバー検証ツールを実行する

ドライバー検証ツール マネージャーを起動せずに、コマンド プロンプト ウィンドウでドライバー検証ツールを実行することもできます。 たとえば、 myDriver.sysというドライバー の標準設定でドライバー検証ツールを実行するには、次のコマンドを使用します。

verifier /standard /driver myDriver.sys

コマンド ライン オプションの詳細については、「 ドライバー検証ツールのコマンド構文」を参照してください。

ドライバー検証ツールを制御する方法

ドライバー検証ツール マネージャーまたはコマンド ラインを使用して、ドライバー検証ツールを制御できます。 ドライバー検証ツール マネージャーを起動するには、このトピックの「 ドライバー検証ツールを起動する方法」を参照してください。

次の各アクションでは、ドライバー検証ツール マネージャーを使用するか、コマンド ラインを入力できます。

ドライバー検証ツールを停止またはリセットするには

  1. ドライバー検証ツール マネージャーで、[既存の設定の削除] を選択し、[完了] を選択します。

    又は

    コマンド プロンプトで次のコマンドを入力します。

    verifier /reset
    
  2. コンピューターを再起動します。

ドライバー検証ツールの統計情報を表示するには

ドライバー検証ツール マネージャーで、現在検証済みのドライバーに関する情報を表示する] を選択し、[次へ] を選択します。 [次へ] を選択し続けると、追加情報が表示されます。

又は

コマンド プロンプトで次のコマンドを入力します。

verifier /query

ドライバー検証ツールの設定を表示するには

ドライバー検証ツール マネージャーで、[既存の設定を表示する] を選択し、[次へ] を選択します。

又は

コマンド プロンプトで次のコマンドを入力します。

verifier /querysettings

ドライバー検証ツール違反をデバッグする方法

ドライバー検証ツールの利点を最大限に活用するには、カーネル デバッガーを使用してテスト コンピューターに接続します。 Windows のデバッグ ツールの概要については、「Windows 用デバッグ ツール (WinDbg、KD、CDB、NTSD)」を参照してください。

ドライバー検証ツールが違反を検出すると、コンピューターを停止するためのバグ チェックが生成されます。 このアクションにより、問題をデバッグするために可能な限り多くの情報が提供されます。 ドライバー検証ツールを実行しているテスト コンピューターにカーネル デバッガーを接続し、ドライバー検証ツールが違反を検出すると、Windows はデバッガーに侵入し、エラーの簡単な説明を表示します。

ドライバー検証ツールによって検出されたすべての違反は、バグ チェックになります。 通常、このバグ チェックはバグ チェック 0xC4です。 詳細については、「 デバッグ バグ チェックの0xC4: DRIVER_VERIFIER_DETECTED_VIOLATIONバグ チェックの0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION」を参照してください。

その他の一般的なバグ チェック コードは次のとおりです。

詳細については、「 ドライバー検証ツールが有効な場合のバグ チェックの処理」を参照してください。

新しいデバッグ セッションを開始するときは、デバッガー拡張機能コマンド !analyze を使用します。 カーネル モードでは、 !analyze コマンドは最新のバグ チェックに関する情報を表示します。 障害が発生しているドライバーを識別するのに役立つ追加情報を表示するには、kd> プロンプトでコマンドにオプション -v を追加します。

kd> !analyze -v

!analyze に加えて、kd> プロンプトに次のデバッガー拡張機能を入力して、ドライバー検証ツールに固有の情報を表示できます。

  • !検証ツール は、キャプチャされたドライバー検証ツールの統計情報をダンプします。 使用可能なすべてのオプションを表示するには、 !verifier -? を使用します。

    kd> !verifier
    
  • !デッドロック は、ドライバー検証ツールのデッドロック検出機能によって追跡されるロックまたはオブジェクトに関連する情報を表示します。 使用可能なすべてのオプションを表示するには、 !deadlock -? を使用します。

    kd> !deadlock
    
  • !iovirp [address] には、I/O 検証ツールによって追跡される IRP に関連する情報が表示されます。 例えば次が挙げられます。

    kd> !iovirp 947cef68
    
  • 違反した DDI コンプライアンス チェック 規則を検索します。 (RuleID は常にバグ チェックの最初の引数です)。DDI コンプライアンス チェックのすべてのルール ID は、nn 0x200形式です

ドライバー検証ツールのオプション

ドライバー検証ツールコマンドの構文

ドライバー検証ツールの使用

ドライバーの検証ツールの制御

DDI 準拠の検査