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 註冊本身時,在WHEA_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 代碼:

傳回碼 Description
STATUS_SUCCESS 錯誤記錄已成功從系統的永續性數據記憶體讀取。
STATUS_OBJECT_NOT_FOUND 系統永續性數據記憶體中沒有錯誤記錄,符合 ErrorRecordId 參數中指定的識別碼。
STATUS_BUFFER_TOO_SMALL 緩衝區的大小太小,無法包含正在讀取的錯誤記錄。
STATUS_UNSUCCESSFUL 發生錯誤。

備註

參與錯誤記錄持續性的 PSHED 外掛程式會設定 Callbacks.WriteErrorRecord回呼.ReadErrorRecordCallbacks.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

另請參閱

ClearErrorRecord

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET

WriteErrorRecord