RtlRestoreContext 函数 (winnt.h)

将调用方上下文还原到指定的上下文记录。

语法

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

参数

[in] ContextRecord

指向 CONTEXT 结构的指针。

[in] ExceptionRecord

指向 EXCEPTION_RECORD 结构的指针。 此参数是可选的,通常应为 NULL

异常记录主要用于长跳转和 C++ catch-throw 支持。 如果 ExceptionCode 成员STATUS_LONGJUMP,则 ExceptionInformation 成员包含指向跳转缓冲区的指针。 在还原上下文记录之前,RtlRestoreContext 会将非易失性状态从 中的跳转缓冲区复制到上下文记录。

如果 ExceptionCode 成员STATUS_UNWIND_CONSOLIDATE,则 ExceptionInformation 成员包含指向回调函数(如 catch 处理程序)的指针。 RtlRestoreContext 在调用回调函数之前,合并其帧与上下文记录中指定的帧之间的调用帧。 这会对回调函数中可能发生的任何异常处理隐藏帧。 此展开与典型展开的区别在于堆栈上的数据仍然存在,因此帧数据(如 throw 对象)仍然可用。 回调函数返回一个新的程序计数器,以在上下文记录中更新,然后在普通还原上下文中使用。

返回值

此函数不返回值。

要求

   
目标平台 Windows
标头 winnt.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CONTEXT

RtlCaptureContext