PSHED_PI_READ_ERROR_RECORD回调函数 (ntddk.h)

PSHED 插件的 ReadErrorRecord 回调函数从系统的永久性数据存储读取错误记录。

语法

PSHED_PI_READ_ERROR_RECORD PshedPiReadErrorRecord;

NTSTATUS PshedPiReadErrorRecord(
  [in, out, optional] PVOID PluginContext,
  [in]                ULONG Flags,
  [in]                ULONGLONG ErrorRecordId,
  [out]               PULONGLONG NextErrorRecordId,
  [in, out]           PULONG RecordLength,
  [out]               PWHEA_ERROR_RECORD ErrorRecord
)
{...}

参数

[in, out, optional] PluginContext

指向上下文区域的指针,当 PSHED 插件调用 PshedRegisterPlugin 函数以向 PSHED 注册自身时,在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 结构的 Context 成员中指定的上下文区域。

[in] Flags

影响读取操作的标志的按位 OR 组合。 当前未定义任何标志。

[in] ErrorRecordId

要从系统的永久性数据存储读取的错误记录的标识符。 如果系统的永久性数据存储中没有与此标识符匹配的错误记录, ReadErrorRecord 回调函数必须返回STATUS_OBJECT_NOT_FOUND。

[out] NextErrorRecordId

指向 ULONGLONG 类型变量的指针,该变量接收存储在系统持久数据存储中的下一个错误记录的标识符。 如果系统永久性数据存储中没有其他错误记录,则应在此参数中返回当前正在读取的错误记录的标识符。

[in, out] RecordLength

指向 ULONG 类型变量的指针,该变量包含 ErrorRecord 参数指向的缓冲区的大小(以字节为单位)。 如果缓冲区的大小足以包含正在读取的错误记录, 则 ReadErrorRecord 回调函数将此变量设置为缓冲区中返回的错误记录的大小(以字节为单位)。 但是,如果缓冲区的大小太小,无法包含正在读取的错误记录, 则 ReadErrorRecord 回调函数将此变量设置为包含错误记录所需的大小(以字节为单位)。 在这种情况下, ReadErrorRecord 回调函数必须返回STATUS_BUFFER_TOO_SMALL。

[out] ErrorRecord

指向缓冲区的指针,该缓冲区接收从系统的永久性数据存储读取的错误记录。

返回值

PSHED 插件的 ReadErrorRecord 回调函数返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_SUCCESS 错误记录已成功从系统的永久性数据存储中读取。
STATUS_OBJECT_NOT_FOUND 系统永久性数据存储中没有与 ErrorRecordId 参数中指定的标识符匹配的错误记录。
STATUS_BUFFER_TOO_SMALL 缓冲区的大小太小,无法包含正在读取的错误记录。
STATUS_UNSUCCESSFUL 出现了错误。

注解

参与错误记录持久性的 PSHED 插件设置 Callbacks.WriteErrorRecord插件调用 PshedRegisterPlugin 函数时,WHEA_PSHED_PLUGIN_REGISTRATION_PACKET结构的 Callbacks.ReadErrorRecord 和 Callbacks.ClearErrorRecord 成员指向其 WriteErrorRecord、ReadErrorRecordClearErrorRecord 回调函数。 PSHED 插件还必须在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 结构的 FunctionalAreaMask 成员中设置 PshedFAErrorRecordPersistence 标志。

Windows 内核调用 PSHED,以在系统重启后出现致命错误或无法恢复的错误条件后,从系统的持久性数据存储读取错误记录。 如果注册 PSHED 插件以参与错误记录持久性,则 PSHED 会调用 PSHED 插件的 ReadErrorRecord 回调函数来执行读取操作。 用于从系统的永久性数据存储读取错误记录的机制特定于平台。

要求

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

另请参阅

ClearErrorRecord

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET

WriteErrorRecord