PSHED_PI_RETRIEVE_ERROR_INFO fonction de rappel (ntddk.h)

La fonction de rappel RetrieveErrorInfo d’un plug-in PSHED 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 membre Context de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET lorsque le plug-in PSHED a appelé la fonction PshedRegisterPlugin pour s’inscrire auprès du PSHED.

[in] ErrorSource

Pointeur vers une structure de 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érielle pour l’erreur matérielle.

Valeur retournée

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

Code de retour Description
STATUS_SUCCESS Le paquet d’erreur matérielle a été correctement mis à jour avec toutes 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érielle 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 est survenue.

Remarques

Un plug-in PSHED qui participe à la récupération des informations d’erreur définit les membres Callbacks.RetrieveErrorInfo, Callbacks.FinalizeErrorRecord et Callbacks.ClearErrorStatus de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET pour pointer vers ses fonctions de rappel RetrieveErrorInfo, FinalizeErrorRecord et 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 concernant 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 la fonction de rappel RetrieveErrorInfo du plug-in PSHED afin qu’il puisse mettre à jour le paquet d’erreur matériel avec toutes les informations d’erreur spécifiques à la plateforme. Le plug-in PSHED peut modifier le contenu existant du paquet d’erreur matérielle et ajouter des informations supplémentaires au paquet d’erreur matérielle. Des informations supplémentaires sont ajoutées à un paquet d’erreur matérielle commençant au décalage spécifié par le membre RawDataOffset 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érielle. La quantité de mémoire qu’un LLHEH alloue 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 de mémoire 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 WHEA_ERROR_SOURCE_DESCRIPTOR pour chaque source d’erreur en fonction des informations supplémentaires.

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

Une tâche importante de la fonction de rappel RetrieveErrorInfo d’un plug-in PSHED consiste à s’assurer que la gravité de la condition d’erreur spécifiée par le membre ErrorSeverity du WHEA_ERROR_PACKET est appropriée. Par exemple, si le niveau de gravité de la condition d’erreur est signalé comme WheaErrSevFatal par le LLHEH, mais que le plug-in PSHED prend en charge un mécanisme de récupération pour la condition d’erreur particulière qui a été signalée, le plug-in PSHED peut modifier 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 LLHEH, mais que le plug-in PSHED reconnaît que la tentative de récupération de la condition d’erreur particulière qui a été signalée n’entraînerait que d’autres problèmes, le plug-in PSHED peut modifier le niveau de gravité en WheaErrSevFatal afin que le système d’exploitation ne tente pas de récupérer à partir de l’erreur.

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

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête ntddk.h (incluez Ntddk.h)
IRQL IRQL >= DISPATCH_LEVEL

Voir aussi

ClearErrorStatus

FinalizeErrorRecord

PshedRegisterPlugin

WHEA_ERROR_PACKET

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET