Condividi tramite


Funzione RtlRestoreContext (winnt.h)

Ripristina il contesto del chiamante nel record di contesto specificato.

Sintassi

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

Parametri

[in] ContextRecord

Puntatore a una struttura CONTEXT .

[in] ExceptionRecord

Puntatore a una struttura EXCEPTION_RECORD . Questo parametro è facoltativo e deve in genere essere NULL.

Un record di eccezione viene usato principalmente con il supporto catch-throw di C++ e long jump. Se il membro ExceptionCode è STATUS_LONGJUMP, il membro ExceptionInformation contiene un puntatore a un buffer jump. RtlRestoreContext copia lo stato non volatile dal buffer jump nel record di contesto prima del ripristino del record di contesto.

Se il membro ExceptionCode è STATUS_UNWIND_CONSOLIDATE, il membro ExceptionInformation contiene un puntatore a una funzione di callback, ad esempio un gestore catch. RtlRestoreContext consolida i fotogrammi delle chiamate tra il frame e il frame specificato nel record di contesto prima di chiamare la funzione di callback. Ciò nasconde i frame da qualsiasi gestione delle eccezioni che potrebbe verificarsi nella funzione di callback. La differenza tra questa e una tipica rimozione è che i dati nello stack sono ancora presenti, quindi i dati frame, ad esempio un oggetto throw, sono ancora disponibili. La funzione di callback restituisce un nuovo contatore del programma da aggiornare nel record di contesto, che viene quindi usato in un contesto di ripristino normale.

Valore restituito

Questa funzione non restituisce un valore.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione winnt.h (includere Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

CONTESTO

RtlCaptureContext