共用方式為


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 註冊本身時,在 ContextWHEA_PSHED_PLUGIN_REGISTRATION_PACKET 成員中指定的內容區域指標。

[in, out] Count

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

[in, out] ErrorSrcs

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

[in, out] Length

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

傳回值

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

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

言論

參與錯誤來源探索的 PSHED 外掛程式會將 Callbacks.GetAllErrorSourcesWHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的成員設定為在外掛程式呼叫 PshedRegisterPlugin 函式時,指向其 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 外掛程式也會設定 Callbacks.GetErrorSourceInfoWHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的成員,以在呼叫 PSHED PshedRegisterPlugin 函式時指向其 GetErrorSourceInfo 回呼函式。

要求

要求 價值
目標平臺 桌面
標頭 ntddk.h (包括 Ntddk.h)
IRQL IRQL = DISPATCH_LEVEL

另請參閱

GetErrorSourceInfo

PshedRegisterPlugin

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET