设置指定进程的动态异常处理延续目标。
Syntax
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 指定延续目标。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 10 内部版本 20348 |
| 支持的最低服务器 | Windows 10 内部版本 20348 |
| Header | processthreadsapi.h |
| Library | kernel32。自由 |