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 |