次の方法で共有


拡張 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 を送信してドライバー コード パスのバグをテストする。

  • ドライバー コード パスのバグをテストするために、偽の WMI IRP を送信する。

  • すべての 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」を参照してください。

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

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