오류 원본 검색에 참여
오류 원본 검색에 참여하려면 PSHED 플러그 인이 GetAllErrorSources 콜백 함수를 구현해야 합니다. 오류 원본 검색에 참여하는 PSHED 플러그 인은 선택적 GetErrorSourceInfo 콜백 함수를 구현할 수도 있습니다.
다음 코드 예제에서는 이러한 콜백 함수를 구현하는 방법을 보여 줍니다.
//
// The PSHED plug-in's GetAllErrorSources callback function
//
NTSTATUS
GetAllErrorSources(
IN OUT PVOID PluginContext,
IN OUT PULONG Count,
IN OUT PWHEA_ERROR_SOURCE_DESCRIPTOR *ErrorSources,
IN OUT PULONG Length
)
{
// Check if there is enough space remaining in the buffer
// that contains the array of error source descriptors to
// include any additional error sources to be reported by
// the PSHED plug-in.
if (...)
{
// Update the list of error sources by modifying the
// existing error sources in the list and adding any
// additional error sources to the list.
...
// If the number of error sources in the list has changed
// update the count that is returned back to the kernel.
*Count = ...;
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to update the list of error sources
else
{
return STATUS_UNSUCCESSFUL;
}
}
// Insufficient space in the buffer.
else
{
// Set the length the necessary buffer size
*Length = ...;
return STATUS_BUFFER_TOO_SMALL;
}
}
//
// The PSHED plug-in's GetErrorSourceInfo callback function
//
NTSTATUS
GetErrorSourceInfo(
IN OUT PVOID PluginContext,
IN OUT PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
)
{
// Modify the information contained in the
// error source descriptor as appropriate.
...
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to update the error source information
else
{
return STATUS_UNSUCCESSFUL;
}
}
오류 원본 검색에 참여하는 PSHED 플러그 인은 운영 체제에 등록할 때PshedFADiscovery 플래그를 지정해야 합니다.