共用方式為


IoAllocateErrorLogEntry 函式 (wdm.h)

IoAllocateErrorLogEntry 例程會配置錯誤記錄專案,並傳回呼叫端用來提供 I/O 錯誤相關信息的封包指標。

語法

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

參數

[in] IoObject

代表發生 I/O 錯誤的裝置之裝置物件的指標,或代表找到錯誤的驅動程式的驅動程式物件指標。

[in] EntrySize

指定要配置之錯誤記錄專案的大小,以位元組為單位。 此值不能超過 ERROR_LOG_MAXIMUM_SIZE。

警告

EntrySizeUCHAR 值。 如果您指定較大的值,編譯程式會將該值以無訊息方式截斷為 UCHAR

傳回值

IoAllocateErrorLogEntry 傳回錯誤記錄專案的指標,或無法配置記錄專案時 NULL

言論

驅動程式必須先在封包中填入錯誤的相關信息,然後呼叫 ioWriteErrorLogEntry,將專案張貼至錯誤記錄檔。 記錄檔項目記錄檔項目之後,會自動釋放錯誤記錄檔專案緩衝區。 不會寫入記錄檔的項目緩衝區可以使用 ioFreeErrorLogEntry 釋放。

錯誤記錄專案是由可變長度 IO_ERROR_LOG_PACKET 結構所組成,後面可能接著一或多個以零計數的 Unicode 字串。 事件查看器會將這些字串插入它針對項目顯示的錯誤訊息中。 IO_ERROR_LOG_PACKET 包含一個可變長度的成員,DumpData 成員。 因此,EntrySize 的值必須 sizeofIO_ERROR_LOG_PACKET) + DumpData 的大小 成員 + 任何驅動程式提供的插入字符串的合併大小。

驅動程式應該先檢查 EntrySize 的值是否小於ERROR_LOG_MAXIMUM_SIZE,再呼叫 IoAllocateErrorLogEntry。 由於 EntrySize 宣告為 UCHAR,而且編譯程式會以無訊息方式截斷任何太大的值而無法放入 UCHAR 中,因此例程本身無法可靠地偵測傳遞的值是否太大。

驅動程式不得將ioAllocateErrorLogEntry 傳回NULL 視為嚴重錯誤。 不論驅動程式是否可以記錄錯誤,驅動程式都必須正常運作。

要求

要求 價值
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

另請參閱

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry