Windows 硬件错误体系结构 (WHEA) 根据错误条件的分类以不同的方式处理硬件错误。 有关硬件错误的不同分类的详细信息,请参阅 硬件错误和错误源。
以下内容描述了 WHEA 针对每种硬件错误状况采取的操作序列。 有关这些作中引用的 WHEA 组件的详细信息,请参阅 Windows 硬件错误体系结构的组件。
更正了硬件错误
低级别硬件错误处理程序 (LLHEH) 会通知存在硬件错误条件。
LLHEH 验证是否存在硬件错误。
LLHEH 从错误源检索硬件错误信息,并使用错误数据填充硬件错误数据包。 此数据包的格式设置为 WHEA_ERROR_PACKET 结构。
LLHEH 调用 特定于平台的硬件错误驱动程序 (PSHED),以检索任何特定于平台的硬件错误信息。 如果安装了 PSHED 插件并注册以参与错误信息检索,PSHED 将反过来调用 PSHED 插件,以便它可以进一步增加返回到 LLHEH 的错误信息。
LLHEH 调用 Windows作系统内核,并向其传递错误数据包。
Windows 内核会创建 错误记录 ,并使用从 LLHEH 收到的错误数据包中的信息以及有关错误的其他信息(例如错误源、错误的严重性以及错误发生的次数)填充该记录。
Windows 内核调用 PSHED,以允许 PSHED 将节添加到错误记录。 如果安装了 PSHED 插件并注册以参与错误信息检索,PSHED 将反过来调用 PSHED 插件,以便它可以进一步扩充错误记录中的信息。
Windows 内核调用 PSHED 以清除错误源的状态寄存器。 如果安装了 PSHED 插件并注册以参与错误信息检索,PSHED 将反过来调用 PSHED 插件,以便它可以清除错误源的状态寄存器。
如果硬件错误条件超过错误源的错误阈值,Windows 内核将生成 ETW 事件并在系统事件日志中记录错误信息。
非严重未更正的硬件错误
LLHEH 收到有关存在硬件错误条件的通知。
LLHEH 验证是否存在硬件错误。
LLHEH 从错误源检索硬件错误信息,并使用错误数据填充硬件错误数据包。
LLHEH 调用 PSHED 以检索任何特定于平台的硬件错误信息。 如果安装了 PSHED 插件并注册以参与错误信息检索,PSHED 将反过来调用 PSHED 插件,以便它可以进一步增加返回到 LLHEH 的错误信息。
LLHEH 调用 Windows作系统内核,并向其传递错误数据包。
Windows 内核会创建 错误记录 ,并使用从 LLHEH 收到的错误数据包中的信息以及有关错误的其他信息(例如错误源、错误的严重性以及错误发生的次数)填充该记录。
Windows 内核调用 PSHED,以允许 PSHED 将节添加到错误记录。 如果安装了 PSHED 插件并注册以参与错误信息检索,PSHED 将反过来调用 PSHED 插件,以便它可以进一步扩充错误记录中的信息。
Windows 内核尝试通过尝试更正硬件错误条件来从错误中恢复。 然后,Windows 内核会调用 PSHED,以有机会执行任何所需的恢复作。 如果安装了 PSHED 插件并注册以参与错误恢复,PSHED 将反过来调用 PSHED 插件,以便它可以尝试更正错误和/或执行从错误条件完全恢复所需的任何其他作。
如果已成功更正硬件错误,Windows 内核将生成 ETW 事件,并在系统事件日志中记录错误信息。 如果未更正硬件错误,Windows 内核将调用 PSHED 以保存错误记录。 如果安装了 PSHED 插件并注册以参与错误记录持久性,PSHED 将反过来调用 PSHED 插件,以便它可以保存错误记录。 保存错误记录后,Windows 内核将生成错误检查。
严重未更正的硬件错误
LLHEH 收到有关存在硬件错误条件的通知。
LLHEH 验证是否存在硬件错误。
LLHEH 从错误源检索硬件错误信息,并使用错误数据填充硬件错误数据包。
LLHEH 调用 PSHED 以检索任何特定于平台的硬件错误信息。 如果安装了 PSHED 插件并注册以参与错误信息检索,PSHED 将反过来调用 PSHED 插件,以便它可以进一步增加返回到 LLHEH 的错误信息。
LLHEH 调用 Windows作系统内核,并向其传递错误数据包。
Windows 内核会创建 错误记录 ,并使用从 LLHEH 收到的错误数据包中的信息以及有关错误的其他信息(例如错误源、错误的严重性以及错误发生的次数)填充该记录。
Windows 内核调用 PSHED 以保存错误记录。 如果安装了 PSHED 插件并注册以参与错误记录持久性,PSHED 将反过来调用 PSHED 插件,以便它可以保存错误记录。
Windows 内核生成 bug 检查。