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 |