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

指出驅動程式已重試作業並遇到此錯誤的次數。 使用零表示驅動程式嘗試作業一次,或為每個重試新增一次超過初始嘗試的重試。

DumpDataSize

指出這個 結構之可變長度 DumpData 成員的大小,以位元組為單位。 指定的值必須是 (ULONG ) 的 倍數。

NumberOfStrings

指出驅動程式將提供這個錯誤記錄專案之插入字串的數目。 對於不需要插入字串的錯誤,驅動程式會將此值設定為零。 事件檢視器 使用這些字串來填入字串範本中的 「%2」 到「%n」 專案,以取得此錯誤碼。

以 Null 終止的 Unicode 字串本身會遵循記憶體中的 IO_ERROR_LOG_PACKET 結構。

StringOffset

指出結構開頭的位移,以位元組為單位,其中任何驅動程式提供的插入字串數據開始。 一般而言,這會 是sizeof (IO_ERROR_LOG_PACKET) 加上 DumpDataSize 成員的值。 如果沒有驅動程式提供的插入字串, StringOffset 可以是零。

EventCategory

指定錯誤的事件類別目錄。 驅動程式會指定其支援的事件類別,以及其訊息目錄中對應的描述性字串。 事件檢視器 會將描述性字串顯示為錯誤的 Category 值。

ErrorCode

指定錯誤的類型。 事件檢視器 會使用錯誤碼來判斷要顯示為錯誤描述值的字串。 事件檢視器 採用驅動程式訊息目錄中提供之錯誤的字串範本、將範本中的 「%1」 取代為驅動程式的裝置物件名稱,並以錯誤記錄專案所提供的插入字串取代「%2」 到 「%n」。

ErrorCode 是系統定義的或驅動程式定義的常數;如需詳細資訊,請參閱 記錄錯誤

UniqueErrorValue

驅動程式特定值,指出在驅動程式中偵測到錯誤的位置。 設定此值是選擇性的。

FinalStatus

指定要針對觸發錯誤的作業傳回的NTSTATUS值。 設定此值是選擇性的。

SequenceNumber

指定目前 IRP 的驅動程式指派序號,此序號在指定要求的存留期應為常數。 設定此值是選擇性的。

IoControlCode

針對 IRP_MJ_DEVICE_CONTROLIRP_MJ_INTERNAL_DEVICE_CONTROL IRP,此成員會針對嘗試錯誤的要求指定 I/O 控制件碼。 否則,此值為零。 設定此值是選擇性的。

DeviceOffset

指定驅動程式指定的位移到發生錯誤的裝置。 設定此值是選擇性的。

DumpData[1]

可用來儲存驅動程式特定二進位數據的可變大小數位,例如緩存器值或任何其他用來識別錯誤原因的資訊。 驅動程式必須指定這個 結構 DumpDataSize 成員中陣列的大小,以位元組為單位。

備註

驅動程式會使用 IoAllocateErrorLogEntry 例程來配置錯誤記錄專案。 IO_ERROR_LOG_PACKET 結構可作為傳回緩衝區的標頭。 它會在記憶體中接著記錄專案的任何插入字串。

請注意,I/O 管理員本身會將一些資訊插入系統錯誤記錄檔中,例如裝置和驅動程序的名稱。 I/O 管理員會保留 80 個字節來保存此資訊。 如果此資訊的大小超過80個字節,則I/O管理員會視需要截斷驅動程式的插入字串。

如需如何使用這個結構的詳細資訊,請參閱 記錄錯誤

規格需求

需求
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)

另請參閱

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry