Freigeben über


PSHED_PI_RETRIEVE_ERROR_INFO Rückruffunktion (ntddk.h)

Die RetrieveErrorInfo Callbackfunktion eines PSHED-Plug-Ins ruft plattformspezifische Fehlerinformationen zu einem aufgetretenen Hardwarefehler ab.

Syntax

PSHED_PI_RETRIEVE_ERROR_INFO PshedPiRetrieveErrorInfo;

NTSTATUS PshedPiRetrieveErrorInfo(
  [in, out, optional] PVOID PluginContext,
  [in]                PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
  [in]                ULONGLONG BufferLength,
  [in, out]           PWHEA_ERROR_PACKET Packet
)
{...}

Parameter

[in, out, optional] PluginContext

Ein Zeiger auf den Kontextbereich, der im Context Member der WHEA_PSHED_PLUGIN_REGISTRATION_PACKET Struktur angegeben wurde, als das PSHED-Plug-In die PshedRegisterPlugin--Funktion aufgerufen hat, um sich bei der PSHED-Funktion zu registrieren.

[in] ErrorSource

Ein Zeiger auf eine WHEA_ERROR_SOURCE_DESCRIPTOR-Struktur, die die Fehlerquelle beschreibt, die den Hardwarefehler gemeldet hat.

[in] BufferLength

Die Größe des Puffers in Byte, auf den der parameter Packet verweist.

[in, out] Packet

Ein Zeiger auf eine WHEA_ERROR_PACKET-Struktur, die das Hardwarefehlerpaket für den Hardwarefehler beschreibt.

Rückgabewert

Die RetrieveErrorInfo Rückruffunktion eines PSHED-Plug-Ins gibt einen der folgenden NTSTATUS-Codes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Das Hardwarefehlerpaket wurde erfolgreich mit plattformspezifischen Fehlerinformationen aktualisiert.
STATUS_BUFFER_TOO_SMALL Die Größe des Puffers, auf den der parameter Packet verweist, wie durch den parameter BufferLength angegeben, ist zu klein, um das Hardwarefehlerpaket zu enthalten, wenn es mit den plattformspezifischen Fehlerinformationen aktualisiert wird.
STATUS_NOT_SUPPORTED Das PSHED-Plug-In unterstützt die angegebene Fehlerquelle nicht.
STATUS_UNSUCCESSFUL Fehler.

Bemerkungen

Ein PSHED-Plug-In, das am Abrufen von Fehlerinformationen teilnimmt, legt die Callbacks.RetrieveErrorInfo, Callbacks.FinalizeErrorRecordund Callbacks.ClearErrorStatus Member der WHEA_PSHED_PLUGIN_REGISTRATION_PACKET Struktur fest zeigen Sie auf die RetrieveErrorInfo-, FinalizeErrorRecordund ClearErrorStatus Rückruffunktionen, wenn das Plug-In die PshedRegisterPlugin--Funktion aufruft, um sich bei der PSHED-Funktion zu registrieren. Das PSHED-Plug-In muss auch das PshedFAErrorInfoRetrieval Flag im FunctionalAreaMask Member der WHEA_PSHED_PLUGIN_REGISTRATION_PACKET Struktur festlegen.

Jeder Hardwarefehlerhandler (Low-Level Hardware Error Handler, LLHEH) ruft beim PSHED alle plattformspezifischen Fehlerinformationen zu einem aufgetretenen Hardwarefehler ab. Wenn ein PSHED-Plug-In für den Abruf von Fehlerinformationen registriert ist, ruft die PSHED das RetrieveErrorInfo Rückruffunktion des PSHED-Plug-Ins auf, damit es das Hardwarefehlerpaket mit allen plattformspezifischen Fehlerinformationen aktualisieren kann. Das PSHED-Plug-In kann den vorhandenen Inhalt des Hardwarefehlerpakets ändern und dem Hardwarefehlerpaket zusätzliche Informationen hinzufügen. Zusätzliche Informationen werden einem Hardwarefehlerpaket hinzugefügt, das mit dem offset beginnt, der durch den RawDataOffset- Member der WHEA_ERROR_PACKET-Struktur angegeben wird.

Ein PSHED-Plug-In muss sicherstellen, dass über das Ende des Hardwarefehlerpakets hinaus keine zusätzlichen Informationen hinzugefügt werden. Der Arbeitsspeicher, den ein LLHEH für einen Puffer zuweist, der ein bestimmtes Hardwarefehlerpaket enthält, wird aus dem MaxRawDataLength Member der WHEA_ERROR_SOURCE_DESCRIPTOR-Struktur berechnet, die die Fehlerquelle beschreibt. Wenn ein PSHED-Plug-In zusätzlichen Pufferraum benötigt, um die zusätzlichen Informationen zu enthalten, muss es an der Fehlerquellenermittlung teilnehmen und den Wert im MaxRawDataLength Member der WHEA_ERROR_SOURCE_DESCRIPTOR-Struktur für jede Fehlerquelle entsprechend erhöhen, um zusätzliche Informationen zu berücksichtigen.

Für alle Fehlerquellen wird die RetrieveErrorInfo Rückruffunktion des PSHED-Plug-Ins mindestens IRQL von DISPATCH_LEVEL aufgerufen. Die RetrieveErrorInfo Callbackfunktion des PSHED-Plug-Ins darf nur Vorgänge ausführen und Aufrufe an andere Funktionen ausführen, die auf dieser hohen IRQL-Ebene zulässig sind.

Eine wichtige Aufgabe der RetrieveErrorInfo Rückruffunktion eines PSHED-Plug-Ins besteht darin, sicherzustellen, dass der Schweregrad der Fehlerbedingung, wie durch das ErrorSeverity-Element Mitglied der WHEA_ERROR_PACKET angegeben, angemessen ist. Wenn beispielsweise der Schweregrad der Fehlerbedingung als WheaErrSevFatal vom LLHEH gemeldet wird, aber das PSHED-Plug-In einen Wiederherstellungsmechanismus für die gemeldete fehlerbedingung unterstützt, kann das PSHED-Plug-In den Schweregrad in WheaErrSevRecoverable ändern, sodass das Betriebssystem versucht, die Wiederherstellung vom Fehler aus dem Fehler zu versuchen. Wenn der Schweregrad der Fehlerbedingung als WheaErrSevRecoverable vom LLHEH gemeldet wird, aber das PSHED-Plug-In erkennt, dass die Wiederherstellung der angegebenen Fehlerbedingung nur weitere Probleme verursachen würde, kann das PSHED-Plug-In die Schweregrad in WheaErrSevFatal ändern, sodass das Betriebssystem keine Wiederherstellung des Fehlers versucht.

Zur Behebung von Hardwarefehlern muss ein PSHED-Plug-In alle Fehlerstatusinformationen abrufen, die für die Verarbeitung der Fehlerbedingung innerhalb der RetrieveErrorInfo Rückruffunktion erforderlich sind, da der Rest der Verarbeitung des Hardwarefehlers nicht garantiert mit der LLHEH synchronisiert werden kann.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- ntddk.h (include Ntddk.h)
IRQL- IRQL->= DISPATCH_LEVEL

Siehe auch

ClearErrorStatus-

FinalizeErrorRecord-

PshedRegisterPlugin

WHEA_ERROR_PACKET

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET