Share via


IRP ログ

ドライバー検証ツールの IRP ログ機能は、IRP のドライバーの使用を監視し、IRP の使用状況のレコードを作成します。 このレコードは、WMI 情報として格納されます。

Windows Driver Kit (WDK) には、この WMI レコードをテキスト ファイルに変換できるツール DC2WMIParser (dc2wmiparser.exe) が含まれています。

このドライバー検証ツール オプションは、Windows Server 2003 以降でのみ使用できます。

WMI レコード

WMI レコードには、デバイスごとに 20 を超える IRP は含まれません。 最初の 20 個の IRP が記録されると、最初の IRP レコードが置き換えられます。 したがって、レコードに 20 個の IRP がリストされている場合、これらは常に最新の 20 個となりますが、これらのうちどれが最新のものであるかを知る方法はありません。

WMI レコードはメモリに格納されるため、コンピューターの再起動時に消去されます。 したがって、DC2WMIParser を使用して、この情報をファイルに保存します。

/t オプションを使用すると、DC2WMIParser は指定された期間継続して実行されます。 この場合、レコードにはデバイスあたり 20 を超える IRP を含めることができます (各サンプリング期間に最大 20 個の IRP)。

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

ドライバー検証ツール マネージャーまたは Verifier.exe コマンド ラインを使用して、1 つ以上のログ機能をアクティブ化できます。

IRP ログ機能をアクティブ化するには、I/O 検証もアクティブにする必要があります。

  • コマンド ラインで

    コマンド ラインでは、IRP ログ オプションは 0x400 (Bit 10) で表されます。

    IRP ログをアクティブ化するには、0x410 のフラグ値を使用するか、フラグ値に 0x410 を追加します。 この値は、I/O 検証 (0x10) と IRP ログ (0x400) をアクティブ化します。 次に例を示します。

    verifier /flags 0x410 /driver MyDriver.sys
    

    この機能は、次の起動時にアクティブになります。

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

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

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

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

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

DC2WMIParser

DC2WMIParser は、ドライバー検証ツールによって作成された WMI IRP レコードを収集し、このログをテキスト ファイルに変換するツールです。

DC2WMIParser の構文は次のとおりです。

dc2wmiparser [/f File] [/t Time]

これらのパラメーターの意味は次のとおりです。

/fFile
書き込むログ ファイルのフル パスとファイル名を指定します。 相対パスは、現在のディレクトリを基準にして取得されます。 これを省略すると、現在のディレクトリにあるファイル名 dc2verifier.act が使用されます。

/tTime
DC2WMIParser が引き続き実行される時間の長さを分単位で指定します。 TimeTime が 0 の場合、DC2WMIParser は、ドライバー検証ツールによって既に格納されているすべての WMI IRP 情報を記録して終了します。 Time が正の値に設定されている場合、DC2WMIParser は指定された時間継続して実行され、新しい情報が到着すると格納されます。 既定値は 0 です。

DC2WMIParser ログ ファイルの形式

DC2WMIParser によって生成されるファイルは ASCII テキスト ファイルです。

このファイルの最初の行には、ファイルに記録されているデバイスの数を表す 10 進数が含まれています。

最初の行の後、ファイルはセクションに分割されます。各セクションでは、1 つのデバイスについて説明します。

各デバイスの形式は次のとおりです。

  • 1 行: デバイス名。

  • 1 行: このデバイスを対象とするデバイスの種類と機能の数を指定する 10 進数。

  • 各デバイスの種類と機能 1 行: コンマで区切られた 3 つの 16 進数。 これらは、デバイスの種類と、このレコードに記録された最小および最高の機能を表します。

  • デバイスの種類と機能ごとに 1 つの行グループで次の手順を実行します。

    • 現在のデバイスの種類の IOCTL の数を指定する 10 進数の 1 行。
    • 各IOCTLに 1 行。 これらの各行には、コンマで区切られた 6 つの 16 進数が含まれています。 デバイスの種類、機能、メソッド、アクセス、入力バッファーの長さ、出力バッファーの長さを指定します。

以下に DC2WMIParser ログ ファイルのサンプルを示します。 実際のファイルでは、スペース、コメント、または空白行はありませんが、より明確にするためにこの例に追加されました。

2           There are two devices described by this log file.

The first device begins here:

  DP(1)0x7e00-0x21dbda400+3   Device name of the first device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420

    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0

The second device begins here:

  DP(1)0x7e00-0x21dbda400+2   Device name of the second device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420


    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0