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 を含む) |