ドライバーの検証ツール

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

注意事項

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

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

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

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

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

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

  • 開発サイクルの早い段階で問題を見つけるために、修正が簡単でコストが低い場合。

  • テストエラーとコンピューターのクラッシュのトラブルシューティングとデバッグ用。

  • WDK、Visual Studio、および Windows Hardware Lab Kit (Windows HLK) または Windows Hardware Certification Kit (Windows 8.1 用) からテスト用のドライバーを展開するときの動作を監視するため。 ドライバーのテストの詳細については、「ドライバー のテスト」を参照してください。

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

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

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

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

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

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

    オプション 推奨される使用法
    署名されていないドライバーを自動的に選択する

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

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

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

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

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

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

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

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

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

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

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

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

Note

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

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

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

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

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

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

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

DDI 準拠の検査