Поделиться через


Функция 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

См. также

КОНТЕКСТЕ

RtlCaptureContext