次の方法で共有


IO_ERROR_LOG_PACKET 構造体 (wdm.h)

IO_ERROR_LOG_PACKET構造体は、エラー ログ エントリのヘッダーとして機能します。

構文

typedef struct _IO_ERROR_LOG_PACKET {
  UCHAR         MajorFunctionCode;
  UCHAR         RetryCount;
  USHORT        DumpDataSize;
  USHORT        NumberOfStrings;
  USHORT        StringOffset;
  USHORT        EventCategory;
  NTSTATUS      ErrorCode;
  ULONG         UniqueErrorValue;
  NTSTATUS      FinalStatus;
  ULONG         SequenceNumber;
  ULONG         IoControlCode;
  LARGE_INTEGER DeviceOffset;
  ULONG         DumpData[1];
} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;

メンバー

MajorFunctionCode

エラーが発生したときにドライバーが処理していた IRP の IRP_MJ_XXX の主要な関数コードを示します。 この値の設定は省略可能です。

RetryCount

ドライバーが操作を再試行し、このエラーが発生した回数を示します。 ドライバーが操作を 1 回試行したことを示すには、0 を使用するか、最初の試行を超えて再試行ごとに 1 つを追加します。

DumpDataSize

この構造体の可変長 DumpData メンバーのサイズをバイト単位で示します。 指定する値は sizeof(ULONG) の倍数である必要があります。

NumberOfStrings

ドライバーがこのエラー ログ エントリで指定する挿入文字列の数を示します。 ドライバーは、挿入文字列を必要としないエラーの場合、この値を 0 に設定します。 イベント ビューアーでは、これらの文字列を使用して、このエラー コードの文字列テンプレート内の "%2" から "%n" エントリを入力します。

null で終わる Unicode 文字列自体は、メモリ内の IO_ERROR_LOG_PACKET 構造に従います。

StringOffset

ドライバー指定の挿入文字列データが開始される、構造体の先頭からのオフセット (バイト単位) を示します。 通常、これは sizeof(IO_ERROR_LOG_PACKET) と DumpDataSize メンバーの値になります。 ドライバー指定の挿入文字列がない場合、 StringOffset は 0 にすることができます。

EventCategory

エラーのイベント カテゴリを指定します。 ドライバーは、サポートするイベント カテゴリと、そのメッセージ カタログ内の対応する説明文字列を指定します。 イベント ビューアーは、エラーの Category 値として説明文字列を表示します。

ErrorCode

エラーの種類を指定します。 イベント ビューアーでは、エラー コードを使用して、エラーの Description 値として表示する文字列を決定します。 イベント ビューアーは、ドライバーのメッセージ カタログで指定されたエラーの文字列テンプレートを受け取り、テンプレートの "%1" をドライバーのデバイス オブジェクトの名前に置き換え、"%2" から "%n" をエラー ログ エントリで指定された挿入文字列に置き換えます。

ErrorCode は、システム定義またはドライバー定義の定数です。詳細については、「 エラーのログ記録 」を参照してください。

UniqueErrorValue

ドライバーでエラーが検出された場所を示すドライバー固有の値。 この値の設定は省略可能です。

FinalStatus

エラーをトリガーした操作に対して返される NTSTATUS 値を指定します。 この値の設定は省略可能です。

SequenceNumber

現在の IRP のドライバー割り当てシーケンス番号を指定します。これは、特定の要求の有効期間を一定にする必要があります。 この値の設定は省略可能です。

IoControlCode

IRP_MJ_DEVICE_CONTROLまたはIRP_MJ_INTERNAL_DEVICE_CONTROL IRP の場合、このメンバーは、エラーをトリガーした要求の I/O コントロール コードを指定します。 それ以外の場合、この値は 0 です。 この値の設定は省略可能です。

DeviceOffset

エラーが発生したデバイスへのドライバー指定のオフセットを指定します。 この値の設定は省略可能です。

DumpData[1]

エラーの原因を特定するのに役立つレジスタ値やその他の情報など、ドライバー固有のバイナリ データを格納するために使用できる可変サイズの配列。 ドライバーは、この構造体の DumpDataSize メンバー内の配列のサイズをバイト単位で指定する必要があります。

注釈

ドライバーは IoAllocateErrorLogEntry ルーチンを使用して、エラー ログ エントリを割り当てます。 IO_ERROR_LOG_PACKET構造体は、返されるバッファーのヘッダーとして機能します。 ログ エントリの挿入文字列がメモリ内に続きます。

I/O マネージャー自体は、デバイスやドライバーの名前などの情報をシステム エラー ログに挿入します。 I/O マネージャーは、この情報を保持するために 80 バイトを予約します。 この情報のサイズが 80 バイトを超える場合、I/O マネージャーは必要に応じてドライバーの挿入文字列を切り捨てます。

この構造の使用方法の詳細については、「 ログ エラー」を参照してください。

要件

要件
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)

こちらもご覧ください

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry