PSHED_PI_READ_ERROR_RECORD回呼函式 (ntddk.h)
PSHED 外掛程式的 ReadErrorRecord 回呼函式會從系統的永續性數據記憶體讀取錯誤記錄。
語法
PSHED_PI_READ_ERROR_RECORD PshedPiReadErrorRecord;
NTSTATUS PshedPiReadErrorRecord(
[in, out, optional] PVOID PluginContext,
[in] ULONG Flags,
[in] ULONGLONG ErrorRecordId,
[out] PULONGLONG NextErrorRecordId,
[in, out] PULONG RecordLength,
[out] PWHEA_ERROR_RECORD ErrorRecord
)
{...}
參數
[in, out, optional] PluginContext
當 PSHED 外掛程式呼叫 PshedRegisterPlugin 函式,以向 PSHED 註冊本身時,在 ContextWHEA_PSHED_PLUGIN_REGISTRATION_PACKET 成員中指定的內容區域指標。
[in] Flags
影響讀取作業之旗標的位 OR 組合。 目前未定義旗標。
[in] ErrorRecordId
要從系統永續性數據記憶體讀取之錯誤記錄的標識碼。 如果系統永續性數據記憶體中沒有符合此標識符的錯誤記錄,則 readErrorRecord 回呼函式 必須傳回STATUS_OBJECT_NOT_FOUND。
[out] NextErrorRecordId
ULONGLONG 型別變數的指標,接收儲存在系統永續性數據記憶體中之下一個錯誤記錄的標識符。 如果系統永續性數據記憶體中沒有儲存其他錯誤記錄,則應該在此參數中傳回目前正在讀取之錯誤記錄的標識符。
[in, out] RecordLength
ULONG 型別變數的指標,其中包含 ErrorRecord 參數所指向之緩衝區的大小,以位元組為單位。 如果緩衝區的大小夠大,足以包含正在讀取的錯誤記錄,ReadErrorRecord 回呼函式會將此變數設定為緩衝區中傳回之錯誤記錄的大小,以位元組為單位。 不過,如果緩衝區的大小太小而無法包含正在讀取的錯誤記錄,則 ReadErrorRecord 回呼函式會將此變數設定為大小,以位元組為單位,以位元組為單位來包含錯誤記錄。 在此情況下,ReadErrorRecord 回呼函式必須傳回STATUS_BUFFER_TOO_SMALL。
[out] ErrorRecord
緩衝區的指標,接收從系統永續性數據記憶體讀取的錯誤記錄。
傳回值
PSHED 外掛程式的 ReadErrorRecord 回呼函式會傳回下列其中一個 NTSTATUS 程式代碼:
傳回碼 | 描述 |
---|---|
STATUS_SUCCESS | 錯誤記錄已成功從系統的永續性數據記憶體讀取。 |
STATUS_OBJECT_NOT_FOUND | 系統持續性數據記憶體中沒有任何錯誤記錄符合 ErrorRecordId 參數中指定的識別符。 |
STATUS_BUFFER_TOO_SMALL | 緩衝區的大小太小,無法包含正在讀取的錯誤記錄。 |
STATUS_UNSUCCESSFUL | 發生錯誤。 |
言論
參與錯誤記錄持續性的 PSHED 外掛程式會將 Callbacks.WriteErrorRecord、Callbacks.ReadErrorRecord 和 Callbacks.ClearErrorRecordWHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的成員指向其 WriteErrorRecord、ReadErrorRecord、 和 ClearErrorRecord 回呼函式時,外掛程式呼叫 PshedRegisterPlugin 函式來向 PSHED 註冊自己。 PSHED 外掛程式也必須在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的 FunctionalAreaMask 成員中設定 PshedFAErrorRecordPersistence 旗標。
Windows 核心會呼叫 PSHED,以在系統在發生嚴重或無法復原的錯誤狀況之後,從系統的永續性數據記憶體讀取錯誤記錄。 如果 PSHED 外掛程式已註冊以參與錯誤記錄持續性,PSHED 會呼叫 PSHED 外掛程式的 ReadErrorRecord 回呼函式來執行讀取作業。 用來從系統永續性數據記憶體讀取錯誤記錄的機制是平臺特定的。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | ntddk.h (包括 Ntddk.h) |
IRQL | IRQL = DISPATCH_LEVEL |