ドライバー検証ツールは、システムのクラッシュや破損の原因となる前にドライバーの問題を特定するのに役立つ Windows テスト ツールです。 カーネル モード ドライバーとグラフィックス ドライバーをリアルタイムで監視することにより、ドライバー検証ツールは、システムを不安定にする可能性がある無効な関数呼び出しと問題のあるアクションを検出します。
新しいドライバーを開発する場合でも、既存のドライバーのトラブルシューティングを行う場合でも、ドライバー検証ツールには、信頼性の高い高品質のドライバーを構築するために必要な早期検出およびデバッグ機能が用意されています。 この包括的なガイドでは、基本的なセットアップから高度なデバッグ手法までについて説明します。
- ドライバー検証ツールを使用するタイミングと理由について説明します
- テスト環境用にドライバー検証ツールを設定する
- 特定のニーズに合わせて検証オプションを構成する
- 違反をデバッグして結果を解釈する
- ドライバー テスト ワークフローのベスト プラクティスを適用する
Von Bedeutung
- ドライバー検証ツールを実行すると、コンピューターがクラッシュする可能性があります。
- テストとデバッグに使用するコンピューターでのみドライバー検証ツールを実行します。
- ドライバーの検証ツールを使用するユーザーは、コンピューターの Administrators グループに属している必要があります。
ドライバー検証ツールはどこで入手できますか?
ほとんどのバージョンの Windows には %WinDir%\system32\ as Verifier.exeに含まれているため、ドライバー検証ツールを取得する必要はありません。 (ドライバー検証ツールは Windows 10 S に含まれていないため、代わりに Windows 10 でドライバーの動作をテストすることをお勧めします)。ドライバー検証ツールは、ダウンロード パッケージとして個別に配布されません。
Windows 10 および以前のバージョンの Windows のドライバー検証ツールの変更については、「 ドライバー検証ツール: 新機能」を参照してください。
ドライバー検証ツールを使用する場合
ドライバーの開発とテストのプロセス全体でドライバー検証ツールを使用します。
早期開発
- 開発サイクルの早い段階で問題を見つけるのが簡単で、修正コストが低い場合
- 運用環境に到達する前に問題をキャッチしてコストのかかる遅延を防ぐ
トラブルシューティング
- テストエラー とコンピューターのクラッシュをすばやくデバッグする
- ドライバー関連のシステム不安定性の根本原因を特定する
テストとデプロイ
- WDK、Visual Studio、および Windows Hardware Lab Kit (Windows HLK) を使用してテストするために展開するときのドライバーの動作を監視する
- Windows ハードウェア認定キットの要件との互換性を確保する
包括的なドライバー テストガイダンスについては、「 ドライバーのテスト」を参照してください。
Von Bedeutung
Windows ハードウェア互換性プログラムには、クライアントおよびサーバー オペレーティング システム上の静的ツール ロゴ (STL) テスト用の CodeQL が必要です。 古い製品では、引き続き SDV と CA のサポートを維持しています。 パートナーは、静的ツール ロゴ テストの CodeQL 要件を確認することを強くお勧めします。 CodeQL の使用方法の詳細については、「 CodeQL と静的ツールのロゴ テスト」を参照してください。
ドライバー検証ツールを起動する方法
テスト コンピューター、またはテストとデバッグを行っているコンピューターでのみ、ドライバー検証ツールを実行します。 ドライバー検証ツールの利点を最大限に活用するには、カーネル デバッガーを使用してテスト コンピューターに接続します。 デバッグ ツールの詳細については、「 Windows 用デバッグ ツール (WinDbg、KD、CDB、NTSD)」を参照してください。
[管理者として実行] を選択してコマンド プロンプト ウィンドウを起動し、「検証ツール」と入力してドライバー検証ツール マネージャーを開きます。
[ 標準設定の作成 ] (既定のタスク) を選択し、[ 次へ] を選択します。
[ カスタム設定の作成 ] を選択して、定義済みの設定から選択したり、個々のオプションを選択したりすることもできます。 詳細については、「 ドライバー検証ツールのオプションとルール クラス」および 「 ドライバー検証ツールのオプションの選択」を参照してください。
[ 確認するドライバーの選択] で、次の表に示す選択スキームのいずれかを選択します。
選択肢 推奨される使用方法 署名されていないドライバーを自動的に選択する 署名されたドライバーを必要としないバージョンの Windows を実行しているコンピューターでテストする場合に便利です。 古いバージョンの Windows 用にビルドされたドライバーを自動的に選択する 新しいバージョンの Windows とのドライバーの互換性をテストする場合に便利です。 このコンピューターにインストールされているすべてのドライバーを自動的に選択する システムでテストされるドライバーの数に関する最大カバレッジを提供します。 このオプションは、ドライバーがシステム上の他のデバイスまたはドライバーと対話できるテスト シナリオに役立ちます。
このオプションでは、特別なプールと一部のリソース追跡に使用できるリソースを使い果たすこともできます。 すべてのドライバーをテストすると、システムのパフォーマンスにも悪影響を及ぼす可能性があります。一覧からドライバー名を選択する ほとんどの場合、テストするドライバーを指定する必要があります。
デバイス スタック内のすべてのドライバーを選択すると、I/O 要求パケット (IRP) がスタック内の各ドライバー間で渡されるため、[ 拡張 I/O 検証 ] オプションを使用してオブジェクトを追跡し、コンプライアンスを確認できます。これにより、エラーが検出されたときにより詳細なレベルを提供できます。
システムまたはドライバーのパフォーマンス メトリックを測定するテスト シナリオを実行している場合、またはメモリの破損やリソース追跡の問題 (デッドロックやミューテックスなど) を検出するために使用できるリソースの最大数を割り当てる場合は、1 つのドライバーを選択します。 特別なプールと I/O 検証オプションは、一度に 1 つのドライバーで使用する場合により効果的です。[ 一覧からドライバー名を選択] を選択した場合は、[ 次へ] を選択し、1 つ以上の特定のドライバーを選択します。
[ 完了] を選択し、コンピューターを再起動します。
注
Windows バージョン 20150 から 25126 でドライバー検証ツールを使用する場合、 ntoskrnl を選択すると、無効な状態エラーが発生する可能性があります。
この問題を回避するには、 ntoskrnl の選択を解除するか、ビルド 25126 の後に Windows のバージョンにアップグレードします。
コマンド プロンプトでドライバー検証ツールを実行する
ドライバー検証ツール マネージャーを起動せずに、コマンド プロンプト ウィンドウでドライバー検証ツールを実行することもできます。 たとえば、 myDriver.sysというドライバー の標準設定でドライバー検証ツールを実行するには、次のコマンドを使用します。
verifier /standard /driver myDriver.sys
コマンド ライン オプションの詳細については、「 ドライバー検証ツールのコマンド構文」を参照してください。
ドライバー検証ツールを制御する方法
ドライバー検証ツールを制御する方法を選択します。
- ドライバー検証ツール マネージャー (GUI) - 初心者向けの簡単なビジュアル インターフェイス
- コマンド ライン - 経験豊富なユーザーの方が高速、スクリプト可能
注
ドライバー検証ツール マネージャーを起動するには、「前 のセクションでドライバー検証ツールを起動する方法 」を参照してください。
ドライバー検証ツールの一般的なタスク
次の各アクションでは、ドライバー検証ツール マネージャーを使用するか、コマンド ラインを入力できます。
ドライバー検証ツールを停止またはリセットするには
ドライバー検証ツール マネージャーで、[既存の設定の削除] を選択し、[完了] を選択します。
又は
コマンド プロンプトで次のコマンドを入力します。
verifier /resetコンピューターを再起動します。
ドライバー検証ツールの統計情報を表示するには
ドライバー検証ツール マネージャーで、現在検証済みのドライバーに関する情報を表示する] を選択し、[次へ] を選択します。 [次へ] を選択し続けると、追加情報が表示されます。
又は
コマンド プロンプトで次のコマンドを入力します。
verifier /query
ドライバー検証ツールの設定を表示するには
ドライバー検証ツール マネージャーで、[既存の設定の表示] を選択し、[次へ] を選択します。
又は
コマンド プロンプトで次のコマンドを入力します。
verifier /querysettings
ドライバー検証ツール違反をデバッグする方法
ドライバー検証ツールの利点を最大限に活用するには、カーネル デバッガーを使用してテスト コンピューターに接続します。 Windows のデバッグ ツールの概要については、「Windows 用デバッグ ツール (WinDbg、KD、CDB、NTSD)」を参照してください。
ドライバー検証ツールが違反を検出すると、コンピューターを停止するためのバグ チェックが生成されます。 このアクションにより、問題をデバッグするために可能な限り多くの情報が提供されます。 ドライバー検証ツールを実行しているテスト コンピューターにカーネル デバッガーを接続し、ドライバー検証ツールが違反を検出すると、Windows はデバッガーに侵入し、エラーの簡単な説明を表示します。
ドライバー検証ツールによって検出されたすべての違反は、バグ チェックになります。 通常、このバグ チェックはバグ チェック 0xC4です。 詳細については、「 デバッグ バグ チェックの0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION と バグ チェックの0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION」を参照してください。
その他の一般的なバグ チェック コードには、次のコードがあります。
- バグ チェック 0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
- バグチェック 0xC6: DRIVER_CAUGHT_MODIFYING_FREED_POOL
- バグチェック 0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION
- バグチェック0xD6: DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
- バグチェック 0xE6:DRIVER_VERIFIER_DMA_VIOLATION
詳細については、「 ドライバー検証ツールが有効な場合のバグ チェックの処理」を参照してください。
新しいデバッグ セッションを開始するときは、デバッガー拡張機能コマンド !analyze を使用します。 カーネル モードでは、 !analyze コマンドは最新のバグ チェックに関する情報を表示します。 障害が発生しているドライバーを識別するのに役立つ追加情報を表示するには、 プロンプトでコマンドに> を追加します。
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 コンプライアンス チェック - コンプライアンス規則と違反を理解する
- Windows 用デバッグ ツール - ドライバー検証ツールのカーネル デバッグを設定する
お問い合わせ
- ドライバー検証ツールのコマンド構文 - 完全なコマンド リファレンス
- ドライバー検証ツールの制御 - 高度な制御手法