Partager via


PSHED_PI_RETRIEVE_ERROR_INFO fonction de rappel (ntddk.h)

Un plug-in PSHED RetrieveErrorInfo fonction de rappel récupère des informations d’erreur spécifiques à la plateforme sur une erreur matérielle qui s’est produite.

Syntaxe

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
)
{...}

Paramètres

[in, out, optional] PluginContext

Pointeur vers la zone de contexte spécifiée dans le Context membre de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET lorsque le plug-in PSHED appelé PshedRegisterPlugin fonction pour s’inscrire auprès du PSHED.

[in] ErrorSource

Pointeur vers une structure WHEA_ERROR_SOURCE_DESCRIPTOR qui décrit la source d’erreur qui a signalé l’erreur matérielle.

[in] BufferLength

Taille, en octets, de la mémoire tampon pointée par le paramètre Packet.

[in, out] Packet

Pointeur vers une structure WHEA_ERROR_PACKET qui décrit le paquet d’erreur matériel pour l’erreur matérielle.

Valeur de retour

Un plug-in PSHED RetrieveErrorInfo fonction de rappel retourne l’un des codes NTSTATUS suivants :

Retourner le code Description
STATUS_SUCCESS Le paquet d’erreurs matérielles a été mis à jour avec les informations d’erreur spécifiques à la plateforme.
STATUS_BUFFER_TOO_SMALL La taille de la mémoire tampon pointée par le paramètre Packet, tel que spécifié par le paramètre BufferLength est trop petite pour contenir le paquet d’erreur matériel s’il est mis à jour avec les informations d’erreur spécifiques à la plateforme.
STATUS_NOT_SUPPORTED Le plug-in PSHED ne prend pas en charge la source d’erreur spécifiée.
STATUS_UNSUCCESSFUL Une erreur s’est produite.

Remarques

Un plug-in PSHED qui participe à la récupération des informations d’erreur définit les Callbacks.RetrieveErrorInfo, Callbacks.FinaliseErrorRecordet Callbacks.ClearErrorStatus membres de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET pour pointer à son RetrieveErrorInfo, FinaliseErrorRecordet fonctions de rappel ClearErrorStatus lorsque le plug-in appelle la fonction PshedRegisterPlugin pour s’inscrire auprès du PSHED. Le plug-in PSHED doit également définir l’indicateur PshedFAErrorInfoRetrieval dans le membre FunctionalAreaMask de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET.

Chaque gestionnaire d’erreurs matérielles de bas niveau (LLHEH) appelle le PSHED pour récupérer toutes les informations d’erreur spécifiques à la plateforme sur une erreur matérielle qui s’est produite. Si un plug-in PSHED est inscrit pour participer à la récupération des informations d’erreur, le PSHED appelle le plug-in PSHED RetrieveErrorInfo fonction de rappel afin qu’il puisse mettre à jour le paquet d’erreurs matériel avec toutes les informations d’erreur spécifiques à la plateforme. Le plug-in PSHED peut modifier le contenu existant du paquet d’erreurs matérielles, ainsi que ajouter des informations supplémentaires au paquet d’erreur matériel. Des informations supplémentaires sont ajoutées à un paquet d’erreur matériel commençant au décalage spécifié par le RawDataOffset membre de la structure WHEA_ERROR_PACKET.

Un plug-in PSHED doit s’assurer qu’il n’ajoute pas d’informations supplémentaires au-delà de la fin du paquet d’erreur matériel. La quantité de mémoire allouée par un LLHEH pour qu’une mémoire tampon contienne un paquet d’erreur matériel particulier est calculée à partir du membre MaxRawDataLength de la structure WHEA_ERROR_SOURCE_DESCRIPTOR qui décrit la source d’erreur. Si un plug-in PSHED nécessite un espace tampon supplémentaire pour contenir les informations supplémentaires, il doit participer à la découverte de la source d’erreur et augmenter la valeur dans le membre MaxRawDataLength de la structure de WHEA_ERROR_SOURCE_DESCRIPTOR pour chaque source d’erreur selon les besoins pour tenir compte des informations supplémentaires.

Pour toutes les sources d’erreur, le plug-in PSHED RetrieveErrorInfo fonction de rappel est appelée au minimum IRQL de DISPATCH_LEVEL. Le plug-in PSHED RetrieveErrorInfo fonction de rappel doit effectuer uniquement des opérations et effectuer des appels à d’autres fonctions autorisées à ce niveau IRQL élevé.

Une tâche importante d’un plug-in PSHED RetrieveErrorInfo fonction de rappel consiste à s’assurer que la gravité de la condition d’erreur spécifiée par l'ErrorSeverity membre du WHEA_ERROR_PACKET convient. Par exemple, si le niveau de gravité de la condition d’erreur est signalé comme WheaErrSevFatal par le plug-in LLHEH, mais que le plug-in PSHED prend en charge un mécanisme de récupération pour la condition d’erreur particulière signalée, le plug-in PSHED peut changer le niveau de gravité en WheaErrSevRecoverable afin que le système d’exploitation tente de récupérer à partir de l’erreur. De même, si le niveau de gravité de la condition d’erreur est signalé comme WheaErrSevRecoverable par le plug-in LLHEH, mais que le plug-in PSHED reconnaît que la tentative de récupération de la condition d’erreur particulière signalée ne provoquerait que d’autres problèmes, le plug-in PSHED peut changer le niveau de gravité en WheaErrSevFatal afin que le système d’exploitation ne tente pas la récupération à partir de l’erreur.

Pour les erreurs matérielles corrigées, un plug-in PSHED doit récupérer toutes les informations d’état d’erreur requises pour le traitement de la condition d’erreur à partir de sa fonction RetrieveErrorInfo fonction de rappel, car le reste du traitement de l’erreur matérielle n’est pas garanti pour être synchronisé avec le LLHEH.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête ntddk.h (include Ntddk.h)
IRQL IRQL >= DISPATCH_LEVEL

Voir aussi

ClearErrorStatus

FinaliseErrorRecord

PshedRegisterPlugin

WHEA_ERROR_PACKET

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET