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 结构的 Context 成员中指定的上下文区域。

[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 插件将 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 函数以向 PSHED 注册自身时指向其 GetErrorSourceInfo 回调函数。

要求

要求
目标平台 桌面
标头 ntddk.h (包括 Ntddk.h)
IRQL IRQL = DISPATCH_LEVEL

另请参阅

GetErrorSourceInfo

PshedRegisterPlugin

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET