PSHED_PI_GET_ALL_ERROR_SOURCES回呼函式 (ntddk.h)

PSHED 外掛程式的 GetAllErrorSources 回呼函式會傳回錯誤來源描述項結構的清單,代表硬體平臺所實作的所有錯誤來源。

語法

PSHED_PI_GET_ALL_ERROR_SOURCES PshedPiGetAllErrorSources;

NTSTATUS PshedPiGetAllErrorSources(
  [in, out, optional] PVOID PluginContext,
  [in, out]           PULONG Count,
  [in, out]           PWHEA_ERROR_SOURCE_DESCRIPTOR *ErrorSrcs,
  [in, out]           PULONG Length
)
{...}

參數

[in, out, optional] PluginContext

當 PSHED 外掛程式呼叫 PshedRegisterPlugin 函式,以向 PSHED 註冊本身時,WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的內容成員中指定的內容區域指標。

[in, out] Count

ULONG 型別變數的指標。 呼叫 GetAllErrorSources 回呼函式時,此變數會包含錯誤來源描述項結構的數目,這些結構包含在 ErrorSources 參數所指向的緩衝區中,如 PSHED 所提供。 如果 GetAllErrorSources 回呼函式變更緩衝區中的錯誤來源描述項結構數目,它必須先將此變數設定為新的錯誤來源描述元結構數目,才能傳回。

[in, out] ErrorSrcs

緩衝區的指標,接收 WHEA_ERROR_SOURCE_DESCRIPTOR 結構的陣列,代表硬體平臺所實作的所有錯誤來源。 呼叫 GetAllErrorSources 回呼函式時,這個緩衝區會包含 PSHED 所提供的錯誤來源描述項結構的初始清單。 PSHED 外掛程式可以變更清單,使其正確地代表硬體平臺所實作的所有錯誤來源。

[in, out] Length

ULONG 型別變數的指標,其中包含 ErrorSources 參數所指向緩衝區的大小,以位元組為單位。 如果大小太小而無法包含錯誤來源描述項結構的修改清單, GetAllErrorSources 回呼函式會將此變數設定為包含清單並傳回STATUS_BUFFER_TOO_SMALL所需的緩衝區大小。

傳回值

PSHED 外掛程式的 GetAllErrorSources 回呼函式會傳回下列其中一個 NTSTATUS 程式代碼:

傳回碼 Description
STATUS_SUCCESS 錯誤來源描述項結構的修改清單已成功傳回 ErrorSources 參數指向的緩衝區中。
STATUS_BUFFER_TOO_SMALL ErrorSources 參數指向的緩衝區大小太小,無法包含錯誤來源描述項結構的清單。
STATUS_UNSUCCESSFUL 發生錯誤。

備註

參與錯誤來源探索的 PSHED 外掛程式會設定WHEA_PSHED_PLUGIN_REGISTRATION_PACKET結構的 Callbacks.GetAllErrorSources 成員,以在外掛程式呼叫 PshedRegisterPlugin 函式以向 PSHED 註冊本身時指向其 GetAllErrorSources 回呼函式。 PSHED 外掛程式也必須在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的 FunctionalAreaMask 成員中設定 PshedFADiscovery 旗標。

當操作系統啟動時,Windows 核心會呼叫 PSHED,以擷取錯誤來源描述項結構的清單,這些結構代表硬體平臺所實作的所有錯誤來源。 PSHED 會建立錯誤來源描述項結構的初始清單。 如果 PSHED 外掛程式已註冊參與錯誤來源探索,PSHED 會呼叫 PSHED 外掛程式的 GetAllErrorSources 回呼函式。 PSHED 外掛程式可以對錯誤來源描述項結構清單進行下列任何變更組合,以便精確地代表硬體平臺所實作的所有錯誤來源。

  • 修改一或多個錯誤來源描述項結構的內容。

  • 從清單中移除一或多個錯誤來源描述項結構。

  • 將一或多個新的錯誤來源描述元結構新增至清單。

如果 PSHED 外掛程式必須將一或多個新的錯誤來源描述元結構加入清單中,而且緩衝區的大小太小而無法包含其他結構,PSHED 外掛程式的 GetAllErrorSources 回呼函式必須將 Length 參數指向的變數設定為包含其他結構之清單所需的緩衝區大小,並傳回STATUS_BUFFER_TOO_SMALL。 在此情況下,PSHED 會配置較大的緩衝區、將錯誤來源描述項結構清單複製到新的緩衝區,並再次呼叫 PSHED 外掛程式的 GetAllErrorSources 回呼函式。

參與錯誤來源探索的 PSHED 外掛程式也可以實作選擇性 的 GetErrorSourceInfo 回 呼函式。 在此情況下,PSHED 外掛程式也會設定 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的 Callbacks.GetErrorSourceInfo 成員,以在呼叫 PshedRegisterPlugin 函式時指向其 GetErrorSourceInfo 回呼函式,以向 PSHED 註冊本身。

規格需求

需求
目標平台 桌面
標頭 ntddk.h (包含 Ntddk.h)
IRQL IRQL = DISPATCH_LEVEL

另請參閱

GetErrorSourceInfo

PshedRegisterPlugin

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET