Partager via


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

Voir aussi

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET