参与错误源控制
若要参与错误源代码管理,PSHED 插件必须实现以下回调函数:
下面的代码示例演示如何实现这些回调函数。
//
// The PSHED plug-in's SetErrorSourceInfo callback function
//
NTSTATUS
SetErrorSourceInfo(
IN OUT PVOID PluginContext,
IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
)
{
// Check if the plug-in supports configuring
// the specified error source.
if (...)
{
// Save the new configuration data for the error
// source in nonvolatile storage and apply the
// configuration changes to the error source such
// that they will become effective after the
// system is restarted.
...
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to configure the error source
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Not supported by the plug-in
else
{
return STATUS_NOT_SUPPORTED;
}
}
//
// The PSHED plug-in's EnableErrorSource callback function
//
NTSTATUS
EnableErrorSource(
IN OUT PVOID PluginContext,
IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
)
{
// Check if the plug-in supports enabling
// the specified error source.
if (...)
{
// Enable the error source
...
// If successful
if (...)
{
// Return success status
return STATUS_SUCCESS;
}
// Failed to enable the error source
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Not supported by the plug-in
else
{
return STATUS_NOT_SUPPORTED;
}
}
//
// The PSHED plug-in's DisableErrorSource callback function
//
NTSTATUS
DisableErrorSource(
IN OUT PVOID PluginContext,
IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
)
{
// Check if the plug-in supports disabling
// the specified error source.
if (...)
{
// Disable the error source
...
// If successful
if (...)
{
// Return success status
return STATUS_SUCCESS;
}
// Failed to disable the error source
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Not supported by the plug-in
else
{
return STATUS_NOT_SUPPORTED;
}
}
参与错误源代码管理的 PSHED 插件在向操作系统注册自身时必须指定 PshedFAErrorSourceControl 标志。