struktur IO_ERROR_LOG_PACKET (wdm.h)

Struktur IO_ERROR_LOG_PACKET berfungsi sebagai header untuk entri log kesalahan.

Sintaks

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;

Anggota

MajorFunctionCode

Menunjukkan kode fungsi utama IRP_MJ_XXX dari IRP yang ditangani driver ketika kesalahan terjadi. Mengatur nilai ini bersifat opsional.

RetryCount

Menunjukkan berapa kali driver telah mencoba kembali operasi dan mengalami kesalahan ini. Gunakan nol untuk menunjukkan driver mencoba operasi sekali, atau tambahkan satu untuk setiap percobaan ulang di luar upaya awal.

DumpDataSize

Menunjukkan ukuran, dalam byte, dari anggota DumpData panjang variabel dari struktur ini. Nilai yang ditentukan harus kelipatan sizeof(ULONG).

NumberOfStrings

Menunjukkan jumlah string penyisipan yang akan diberikan driver dengan entri log kesalahan ini. Driver mengatur nilai ini ke nol untuk kesalahan yang tidak memerlukan string penyisipan. Pemantau Peristiwa menggunakan string ini untuk mengisi entri "%2" hingga "%n" dalam templat string untuk kode kesalahan ini.

String Unicode yang dihentikan null sendiri mengikuti struktur IO_ERROR_LOG_PACKET dalam memori.

StringOffset

Menunjukkan offset, dalam byte, dari awal struktur, di mana data string penyisipan yang disediakan driver dimulai. Biasanya ini akan menjadi sizeof(IO_ERROR_LOG_PACKET) ditambah nilai anggota DumpDataSize . Jika tidak ada string penyisipan yang disediakan driver, StringOffset bisa nol.

EventCategory

Menentukan kategori peristiwa untuk kesalahan tersebut. Driver menentukan kategori peristiwa yang didukungnya dan string deskriptif yang sesuai dalam katalog pesannya. Pemantau Peristiwa menampilkan string deskriptif sebagai nilai Kategori untuk kesalahan.

ErrorCode

Menentukan jenis kesalahan. Pemantau Peristiwa menggunakan kode kesalahan untuk menentukan string mana yang akan ditampilkan sebagai nilai Deskripsi untuk kesalahan. Pemantau Peristiwa mengambil templat string untuk kesalahan yang disediakan dalam katalog pesan driver, mengganti "%1" dalam templat dengan nama objek perangkat driver, dan mengganti "%2" melalui "%n" dengan string penyisipan yang disediakan dengan entri log kesalahan.

ErrorCode adalah konstanta yang ditentukan sistem atau ditentukan driver; lihat Kesalahan Pengelogan untuk informasi selengkapnya.

UniqueErrorValue

Nilai khusus driver yang menunjukkan di mana kesalahan terdeteksi di driver. Mengatur nilai ini bersifat opsional.

FinalStatus

Menentukan nilai NTSTATUS yang akan dikembalikan untuk operasi yang memicu kesalahan. Mengatur nilai ini bersifat opsional.

SequenceNumber

Menentukan nomor urutan yang ditetapkan driver untuk IRP saat ini, yang harus konstan selama masa pakai permintaan tertentu. Mengatur nilai ini bersifat opsional.

IoControlCode

Untuk IRP IRP_MJ_DEVICE_CONTROL atau IRP_MJ_INTERNAL_DEVICE_CONTROL , anggota ini menentukan kode kontrol I/O untuk permintaan yang memangkas kesalahan. Jika tidak, nilai ini adalah nol. Mengatur nilai ini bersifat opsional.

DeviceOffset

Menentukan offset yang ditentukan driver ke perangkat tempat kesalahan terjadi. Mengatur nilai ini bersifat opsional.

DumpData[1]

Array ukuran variabel yang dapat digunakan untuk menyimpan data biner khusus driver, seperti nilai register atau informasi lain yang berguna dalam mengidentifikasi penyebab kesalahan. Driver harus menentukan ukuran, dalam byte, dari array di anggota DumpDataSize dari struktur ini.

Keterangan

Driver menggunakan rutinitas IoAllocateErrorLogEntry untuk mengalokasikan entri log kesalahan. Struktur IO_ERROR_LOG_PACKET berfungsi sebagai header untuk buffer yang dikembalikan. Ini diikuti dalam memori oleh string penyisipan apa pun untuk entri log.

Perhatikan bahwa manajer I/O itu sendiri menyisipkan beberapa informasi ke dalam log kesalahan sistem, seperti nama perangkat dan driver. Manajer I/O mencadangkan 80 byte untuk menyimpan informasi ini. Jika ukuran informasi ini melebihi 80 byte, maka manajer I/O memotong string penyisipan driver seperlunya.

Untuk informasi selengkapnya tentang cara menggunakan struktur ini, lihat Kesalahan Pengelogan.

Persyaratan

Persyaratan Nilai
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)

Lihat juga

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry