參與錯誤資訊擷取
若要參與錯誤資訊擷取,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旗標。