PSHED_PI_FINALIZE_ERROR_RECORD回调函数 (ntddk.h)
PSHED 插件的 FinalizeErrorRecord 回调函数将补充错误记录部分添加到错误记录中,以更全面地描述错误条件。
语法
PSHED_PI_FINALIZE_ERROR_RECORD PshedPiFinalizeErrorRecord;
NTSTATUS PshedPiFinalizeErrorRecord(
[in, out, optional] PVOID PluginContext,
[in] PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
[in] ULONG BufferLength,
[in, out] PWHEA_ERROR_RECORD ErrorRecord
)
{...}
参数
[in, out, optional] PluginContext
指向当 PSHED 插件调用 PshedRegisterPlugin 函数以向 PSHED 注册自身时,在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 结构的 Context 成员中指定的上下文区域的指针。
[in] ErrorSource
指向 WHEA_ERROR_SOURCE_DESCRIPTOR 结构的指针,该结构描述报告硬件错误的错误源。
[in] BufferLength
ErrorRecord 参数指向的缓冲区的大小(以字节为单位)。
[in, out] ErrorRecord
指向 WHEA_ERROR_RECORD 结构的指针,该结构描述使用补充错误记录部分进行更新的错误记录。
返回值
PSHED 插件的 FinalizeErrorRecord 回调函数返回以下 NTSTATUS 代码之一:
返回代码 | 说明 |
---|---|
STATUS_SUCCESS | 已使用任何补充错误记录部分成功更新错误记录。 |
STATUS_BUFFER_TOO_SMALL | BufferLength 参数指定的 ErrorRecord 参数指向的缓冲区的大小太小,如果用补充错误记录部分进行更新,则无法包含错误记录。 |
STATUS_NOT_SUPPORTED | PSHED 插件不支持指定的错误源。 |
STATUS_UNSUCCESSFUL | 出现了错误。 |
注解
参与错误信息检索的 PSHED 插件设置 Callbacks.RetrieveErrorInfo, 当插件调用 PshedRegisterPlugin 函数以向 PSHED 注册自身时,WHEA_PSHED_PLUGIN_REGISTRATION_PACKET结构的 Callbacks.FinalizeErrorRecord 和 Callbacks.ClearErrorStatus 成员指向其 RetrieveErrorInfo、FinalizeErrorRecord 和 ClearErrorStatus 回调函数。 PSHED 插件还必须在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 结构的 FunctionalAreaMask 成员中设置 PshedFAErrorInfoRetrieval 标志。
Windows 内核调用 PSHED,以便它可以向错误记录添加补充错误记录部分。 如果注册 PSHED 插件以参与错误信息检索,则 PSHED 会调用 PSHED 插件的 FinalizeErrorRecord 回调函数,以便 PSHED 插件可以将任何其他错误记录部分添加到错误记录中,以便更全面地描述错误条件。
PSHED 插件必须确保它不会在错误记录末尾之外添加补充错误记录部分。 Windows 内核为包含特定错误记录的缓冲区分配的内存量是从描述报告硬件错误的错误源的 WHEA_ERROR_SOURCE_DESCRIPTOR 结构的 MaxRawDataLength 和 MaxSectionsPerRecord 成员计算得出的。 如果 PSHED 插件需要额外的缓冲区空间来包含它添加到错误记录的补充错误记录部分,则它必须参与错误源发现,并根据需要为每个错误源增加WHEA_ERROR_SOURCE_DESCRIPTOR结构的 MaxSectionsPerRecord 成员中的值,以考虑任何补充错误记录部分。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | ntddk.h (包括 Ntddk.h) |
IRQL | IRQL >= DISPATCH_LEVEL |