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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour