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 |