Partager via


Fonction RtlRestoreContext (winnt.h)

Restaure le contexte de l’appelant dans l’enregistrement de contexte spécifié.

Syntaxe

NTSYSAPI VOID __cdecl RtlRestoreContext(
  PCONTEXT          ContextRecord,
  _EXCEPTION_RECORD *ExceptionRecord
);

Paramètres

[in] ContextRecord

Pointeur vers une structure CONTEXT .

[in] ExceptionRecord

Pointeur vers une structure EXCEPTION_RECORD . Ce paramètre est facultatif et doit généralement avoir la valeur NULL.

Un enregistrement d’exception est principalement utilisé avec la prise en charge du saut en longueur et de la levée de capture C++. Si le membre ExceptionCode est STATUS_LONGJUMP, le membre ExceptionInformation contient un pointeur vers une mémoire tampon de saut. RtlRestoreContext copie l’état non volatile de la mémoire tampon de saut dans vers l’enregistrement de contexte avant la restauration de l’enregistrement de contexte.

Si le membre ExceptionCode est STATUS_UNWIND_CONSOLIDATE, le membre ExceptionInformation contient un pointeur vers une fonction de rappel, telle qu’un gestionnaire de capture. RtlRestoreContext consolide les trames d’appel entre son image et l’image spécifiée dans l’enregistrement de contexte avant d’appeler la fonction de rappel. Cela masque les images de toute gestion des exceptions qui peut se produire dans la fonction de rappel. La différence entre cela et un déroulement classique est que les données sur la pile sont toujours présentes, de sorte que les données frame telles qu’un objet throw sont toujours disponibles. La fonction de rappel retourne un nouveau compteur de programme à mettre à jour dans l’enregistrement de contexte, qui est ensuite utilisé dans un contexte de restauration normal.

Valeur renvoyée

Cette fonction ne retourne pas de valeur.

Configuration requise

   
Plateforme cible Windows
En-tête winnt.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CONTEXT

RtlCaptureContext