参与错误信息检索
若要参与错误信息检索,PSHED 插件必须实现以下回调函数:
下面的代码示例演示如何实现这些回调函数。
//
// The PSHED plug-in's RetrieveErrorInfo callback function
//
NTSTATUS
RetrieveErrorInfo(
IN OUT PVOID PluginContext,
IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
IN ULONGLONG BufferLength,
IN OUT PWHEA_ERROR_PACKET Packet
)
{
// Check if the plug-in supports retrieving error
// information from the specified error source.
if (...)
{
// Check if there is enough space remaining in the hardware
// error packet to update it with the platform-specific
// error information.
if (...)
{
// Retrieve the platform-specific error information from
// the error source and update the hardware error packet.
...
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to retrieve the platform-specific error information
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Insufficient space in the hardware error packet.
else
{
return STATUS_BUFFER_TOO_SMALL;
}
}
// Not supported by the plug-in
else
{
return STATUS_NOT_SUPPORTED;
}
}
//
// The PSHED plug-in's FinalizeErrorRecord callback function
//
NTSTATUS
FinalizeErrorRecord(
IN OUT PVOID PluginContext,
IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
IN ULONG BufferLength,
IN OUT PWHEA_ERROR_RECORD ErrorRecord
)
{
// Check if the plug-in supports finalizing the error
// record for errors from the specified error source.
if (...)
{
// Check if there is enough space remaining in the
// error record to update it with the supplementary
// platform-specific error record sections.
if (...)
{
// Update the error record with the supplementary
// platform-specific error record sections.
...
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to update the error record
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Insufficient space in the error record.
else
{
return STATUS_BUFFER_TOO_SMALL;
}
}
// Not supported by the plug-in
else
{
return STATUS_NOT_SUPPORTED;
}
}
//
// The PSHED plug-in's ClearErrorStatus callback function
//
NTSTATUS
ClearErrorStatus(
IN OUT PVOID PluginContext,
IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
IN ULONG BufferLength,
IN PWHEA_ERROR_RECORD ErrorRecord
)
{
// Check if the plug-in supports clearing the error
// status for errors from the specified error source.
if (...)
{
// Clear the error status for the error source
...
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to clear the error status
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Not supported by the plug-in
else
{
return STATUS_NOT_SUPPORTED;
}
}
参与错误信息检索的 PSHED 插件在向操作系统注册自身时必须指定 PshedFAErrorInfoRetrieval 标志。
反馈
https://aka.ms/ContentUserFeedback。
即将推出:在整个 2024 年,我们将逐步取消以“GitHub 问题”作为内容的反馈机制,并将其替换为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈