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 |