共用方式為


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 成員的大小,以位元組為單位。 指定的值必須是 sizeof(ULONG) 的倍數。

NumberOfStrings

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

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

StringOffset

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

EventCategory

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

ErrorCode

指定錯誤的類型。 事件查看器會使用錯誤碼來判斷要顯示為錯誤描述值的字串。 事件查看器會採用驅動程式訊息目錄中所提供錯誤的字串範本、將範本中的 「%1」 取代為驅動程式裝置物件的名稱,並將 「%2」 取代為 「%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