Share via


拡張 I/O 検証

この機能は、Windows XP 以降のバージョンの Windows オペレーティング システムでのみ使用できます。

Windows 7 以降のバージョンの Windows オペレーティング システムでは、I/O 検証を選択すると、拡張 I/O 検証が自動的にアクティブ化されます。 別のオプションとして選択することはできません。

拡張 I/O 検証がアクティブになると、ドライバー検証ツールは、いくつかの I/O マネージャー ルーチンの呼び出しを監視し、PnP IRP、電源 IRP、WMI IRP のストレス テストを実行します。

Windows Vista と Windows XP では、拡張 I/O 検証は I/O 検証 とは別にアクティブ化されますが、両方のオプションを選択すると、ドライバーの I/O インターフェイス メソッドをより完全にテストできます。

拡張 I/O 検証の機能

ドライバー検証ツールは、拡張 I/O 検証をアクティブ化するときに、次のチェックを追加します。

  • IoMarkIrpPending を呼び出 した場合にのみ、ドライバーがSTATUS_PENDINGを返すように、すべての IRP を監視します。

  • IoDeleteDevice の使用を監視して、ドライバーが同じデバイスをもう一度削除しないことを確認し、デバイス オブジェクトの不適切なデタッチと削除を検出します。

  • ドライバーがすべての IoSkipCurrentIrpStackLocation 呼び出しを正しくアンワインドすることを確認します。

新しいストレスとテストは次のとおりです。

  • プラグ アンド プレイ (PnP) ドライバーがデバイスの開始順序を想定しないように、列挙されたデバイスの順序を調整します。

  • PnP と Power IRP の完了時の状態を調整して、ディスパッチ ルーチンから正しくない状態を返すドライバーをキャッチします。

  • 偽の Power IRP を送信してドライバー コード パスのバグをテストする。

  • 偽の Power WMI を送信してドライバー コード パスのバグをテストする。

  • すべての WDM スタックに偽のフィルターを挿入する。

拡張 I/O 検証エラーの表示

拡張 I/O 検証でキャッチされたドライバー エラーは、 レベル 2 の I/O 検証でキャッチされたものと同じ方法で表示されます。

ブルー スクリーンでは、これらのエラーは、メッセージ IO システム検証エラー と文字列 WDM DRIVER ERRORXXXによって示されます。ここで、 XXX は I/O エラー コードです。

クラッシュ ダンプ ファイルでは、これらのエラーは、メッセージ BugCheck 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION)と I/O エラー コードによって示されます。 この場合、バグ チェック 0xC9の最初のパラメーターとして I/O エラー コードが表示されます。

カーネル デバッガー (KD または WinDbg) では、これらのエラーは、メッセージ WDM DRIVER ERROR と説明テキスト文字列によって示されます。 カーネル デバッガーがアクティブな場合、レベル 2 のエラーを無視してシステム操作を再開できます。 (これは、他のバグ チェックでは不可能です)。

ブルー スクリーン、クラッシュ ダンプ ファイル、カーネル デバッガーにも追加情報が表示されます。 すべての I/O 検証レベル 2 エラー メッセージの詳細については、「バグ チェック 0xC9」を参照してください。

このオプションのアクティブ化

Driver Verifier Manager または Verifier.exe コマンド ラインを使用して、1 つ以上のドライバーに対して拡張 I/O 検証機能をアクティブ化できます。 詳細については、 「ドライバー検証ツール オプションの選択」を参照してください 。

Windows 7 以降のバージョンの Windows オペレーティング システムでは、 I/O検証 を選択すると、拡張 I/O 検証が自動的にアクティブ化されます。 別のオプションとして選択することはできません。

  • コマンドラインで

    コマンド ラインでは、拡張 I/O 検証オプションは ビット 6 (0x40)で表されます。 拡張 I/O 検証をアクティブにするには、0x40のフラグ値を使用するか、フラグ値に0x40を追加します。 次に例を示します。

    verifier /flags 0x40 /driver MyDriver.sys
    

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

    Windows Vista 以降のバージョンの Windows では、 /volatile パラメーターをコマンドに追加することで、コンピューターを再起動せずに 拡張 I/O 検証をアクティブ化および非アクティブ化することもできます。 次に例を示します。

    verifier /volatile /flags 0x40 /adddriver MyDriver.sys
    

    この設定はすぐに有効になりますが、コンピューターをシャットダウンまたは再起動すると失われます。 詳細については、「揮発性設定の使用」を参照してください。

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

    1. ドライバー検証マネージャーを起動します。 コマンド プロンプト ウィンドウに 「Verifier」 と入力します。
    2. 「カスタム設定の作成 (コード開発者用)」 を選択し、 「次へ」をクリックします。
    3. 全一覧から [個々の設定を選択] を選択します。
    4. 拡張 I/O 検証を選択 (チェック) します。

    DMA 検証機能は標準設定にも含まれています。 この機能を使用するには、ドライバー検証ツール マネージャーで、 [標準設定の作成]をクリックします。