Bagikan melalui


Fungsi IoAllocateErrorLogEntry (wdm.h)

Rutinitas IoAllocateErrorLogEntry mengalokasikan entri log kesalahan, dan mengembalikan penunjuk ke paket yang digunakan pemanggil untuk memberikan informasi tentang kesalahan I/O.

Sintaks

PVOID IoAllocateErrorLogEntry(
  [in] PVOID IoObject,
  [in] UCHAR EntrySize
);

Parameter

[in] IoObject

Penunjuk ke objek perangkat yang mewakili perangkat tempat terjadinya kesalahan I/O, atau ke objek driver yang mewakili driver yang menemukan kesalahan.

[in] EntrySize

Menentukan ukuran, dalam byte, dari entri log kesalahan yang akan dialokasikan. Nilai ini tidak boleh melebihi ERROR_LOG_MAXIMUM_SIZE.

Peringatan

EntrySize adalah nilai UCHAR . Jika Anda menentukan nilai yang lebih besar, pengkompilasi akan secara diam-diam memotong nilai tersebut ke UCHAR (salah).

Nilai kembali

IoAllocateErrorLogEntry mengembalikan penunjuk ke entri log kesalahan, atau NULL jika entri log tidak dapat dialokasikan.

Keterangan

Driver harus terlebih dahulu mengisi paket dengan informasi tentang kesalahan, lalu panggil IoWriteErrorLogEntry untuk memposting entri ke log kesalahan. Buffer entri log kesalahan secara otomatis dibebaskan setelah entri log direkam. Buffer entri yang tidak akan ditulis ke log dapat dibebaskan dengan menggunakan IoFreeErrorLogEntry.

Entri log kesalahan terdiri dari struktur IO_ERROR_LOG_PACKET panjang variabel, mungkin diikuti oleh satu atau beberapa string Unicode yang dihitung nol. Pemantau Peristiwa menyisipkan string ini ke dalam pesan kesalahan yang ditampilkan untuk entri. IO_ERROR_LOG_PACKET berisi satu anggota panjang variabel, anggota DumpData . Dengan demikian, nilai untuk EntrySize harus ukuranof(IO_ERROR_LOG_PACKET) + ukuran anggota DumpData + ukuran gabungan dari string penyisipan yang disediakan driver.

Driver harus memeriksa bahwa nilai untuk EntrySize kurang dari ERROR_LOG_MAXIMUM_SIZE sebelum memanggil IoAllocateErrorLogEntry. Karena EntrySize dinyatakan sebagai UCHAR, dan pengkompilasi akan secara diam-diam memotong nilai apa pun yang terlalu besar untuk masuk ke dalam UCHAR, rutinitas itu sendiri tidak dapat mendeteksi dengan andal jika nilai yang dilewatkan terlalu besar.

Driver tidak boleh memperlakukan IoAllocateErrorLogEntry yang mengembalikan NULL sebagai kesalahan fatal. Driver harus terus berfungsi secara normal, terlepas dari apakah itu dapat mencatat kesalahan.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

Lihat juga

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry