SetProcessDynamicEHContinuationTargets 函数 (processthreadsapi.h)
为指定进程设置动态异常处理延续目标。
语法
BOOL SetProcessDynamicEHContinuationTargets(
HANDLE Process,
USHORT NumberOfTargets,
PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets
);
参数
Process
进程的句柄。 此句柄必须具有 PROCESS_SET_INFORMATION 访问权限。 有关详细信息,请参阅 进程安全和访问权限。
NumberOfTargets
提供要设置的动态异常处理延续目标的数量。
Targets
指向动态异常处理延续目标的数组的指针。 有关此结构的详细信息,请参阅 PROCESS_DYNAMIC_EH_CONTINUATION_TARGET。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 请注意,即使函数失败,提供的一部分延续目标也可能已成功处理。 调用方需要检查通过 Targets 指定的每个单独的延续目标中的标志,以确定它是否已成功处理。
注解
如果为进程启用了用户模式硬件强制堆栈保护,则调用修改线程执行上下文(如 RtlRestoreContext 和 SetThreadContext)的 API 时,将对新执行上下文中指定的指令指针执行验证。
在结构化异常处理期间使用 RtlRestoreContext (SEH) 异常展开,以展开到包含 __except
块的目标帧,并开始在延续目标处执行代码。
因此,操作系统需要知道所有有效延续目标的指令地址,以便允许通过 RtlRestoreContext 执行展开操作。
对于已编译的二进制文件,延续目标列表由链接器生成并存储在二进制映像中。
对于动态代码,需要使用 SetProcessDynamicEHContinuationTargets 指定延续目标。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10内部版本 20348 |
最低受支持的服务器 | Windows 10内部版本 20348 |
标头 | processthreadsapi.h |