Функция RtlRestoreContext (winnt.h)
Восстанавливает контекст вызывающего объекта в указанной записи контекста.
Синтаксис
NTSYSAPI VOID __cdecl RtlRestoreContext(
PCONTEXT ContextRecord,
_EXCEPTION_RECORD *ExceptionRecord
);
Параметры
[in] ContextRecord
Указатель на структуру CONTEXT .
[in] ExceptionRecord
Указатель на структуру EXCEPTION_RECORD . Этот параметр является необязательным и обычно должен иметь значение NULL.
Запись исключения используется в основном с поддержкой прыжков в длину и C++. Если элемент ExceptionCode STATUS_LONGJUMP, элемент ExceptionInformation содержит указатель на буфер перехода. RtlRestoreContext скопирует энергонезависимое состояние из буфера перехода в запись контекста перед восстановлением записи контекста.
Если элемент ExceptionCode STATUS_UNWIND_CONSOLIDATE, элемент ExceptionInformation содержит указатель на функцию обратного вызова, например обработчик catch. RtlRestoreContext объединяет кадры вызова между кадром и кадром, указанным в записи контекста, перед вызовом функции обратного вызова. Это скрывает кадры от любой обработки исключений, которая может возникнуть в функции обратного вызова. Разница между этим и типичной очисткой заключается в том, что данные в стеке по-прежнему присутствуют, поэтому данные кадра, такие как объект throw, по-прежнему доступны. Функция обратного вызова возвращает новый счетчик программы для обновления в записи контекста, которая затем используется в обычном контексте восстановления.
Возвращаемое значение
Эта функция не возвращает значение.
Требования
Целевая платформа | Windows |
Header | winnt.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |