PSHED_PI_ATTEMPT_ERROR_RECOVERY fonction de rappel (ntddk.h)
Un plug-in PSHED AttemptRecovery fonction de rappel tente de récupérer à partir d’une erreur matérielle récupérable.
Syntaxe
PSHED_PI_ATTEMPT_ERROR_RECOVERY PshedPiAttemptErrorRecovery;
NTSTATUS PshedPiAttemptErrorRecovery(
[in, out, optional] PVOID PluginContext,
[in] ULONG BufferLength,
[in] PWHEA_ERROR_RECORD ErrorRecord
)
{...}
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] BufferLength
Taille, en octets, de l’enregistrement d’erreur pointé par le paramètre ErrorRecord.
[in] ErrorRecord
Pointeur vers une structure WHEA_ERROR_RECORD qui décrit un enregistrement d’erreur pour une erreur matérielle récupérable.
Valeur de retour
Un plug-in PSHED AttemptRecovery fonction de rappel retourne l’un des codes NTSTATUS suivants.
Retourner le code | Description |
---|---|
STATUS_SUCCESS | La tentative de récupération à partir de l’erreur matérielle a réussi. |
STATUS_UNSUCCESSFUL | La tentative de récupération à partir de l’erreur matérielle a échoué. |
Remarques
Un plug-in PSHED qui participe à la récupération d’erreurs définit le membre Callbacks.AttemptRecovery de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET pour pointer vers sa fonction de rappel AttemptRecovery 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 PshedFAErrorRecovery dans le membre FunctionalAreaMask de la structure WHEA_PSHED_PLUGIN_REGISTRATION_PACKET.
Le noyau Windows tente de récupérer à partir d’une erreur matérielle récupérable pendant qu’il traite l’erreur une fois que toutes les données d’erreur matérielles ont été placées dans l’enregistrement d’erreur. Le noyau Windows appelle ensuite le PSHED pour lui donner la possibilité d’effectuer toutes les opérations de récupération requises. Si un plug-in PSHED est inscrit pour participer à la récupération d’erreurs, le PSHED appelle la fonction de rappel tryRecovery du plug-in PSHED afin qu’il puisse tenter de corriger l’erreur et/ou d’effectuer toutes les opérations supplémentaires nécessaires à la récupération complète à partir de la condition d’erreur.
Si le noyau Windows ou le PSHED récupère correctement à partir de l’erreur matérielle, il met à jour la structure WHEA_ERROR_RECORD qui décrit l’erreur avant d’appeler le plug-in PSHED AttemptRecovery fonction de rappel comme suit :
Le membre Header.Severity est remplacé par WheaErrSevRecoverable par WheaErrSevCorrected.
Le bit Header.Flags.Recovered est défini.
Si le plug-in PSHED récupère correctement à partir de l’erreur matérielle, le PSHED met à jour la structure WHEA_ERROR_RECORD pour le compte du plug-in PSHED après l’appel au plug-in PSHED AttemptRecovery fonction de rappel retourne. Un plug-in PSHED AttemptRecovery fonction de rappel ne doit pas modifier l’enregistrement d’erreur.
Le PSHED appelle la fonction de rappel AttemptRecovery d’un plug-in PSHED au <IRQL = HIGH_LEVEL. L’irQL exact auquel cette fonction de rappel est appelée dépend du type spécifique d’erreur matérielle qui s’est produite.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | ntddk.h (include Ntddk.h) |
IRQL | IRQL >= DISPATCH_LEVEL |