SetProcessDynamicEnforcedCetCompatibleRanges 函数 (processthreadsapi.h)
注意
在 2020 年 11 月发布的更新中,此 API 已添加到 19041 SDK 中。
为指定进程设置动态强制实施的 CETCOMPAT 范围。
语法
BOOL SetProcessDynamicEnforcedCetCompatibleRanges(
HANDLE Process,
USHORT NumberOfRanges,
PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges
);
参数
Process
进程的句柄。 此句柄必须具有 PROCESS_SET_INFORMATION 访问权限。 有关详细信息,请参阅 进程安全性和访问权限。
NumberOfRanges
提供要设置的动态强制 CETCOMPAT 范围的数量。
Ranges
指向动态强制的 CETCOMPAT 范围的数组的指针。 有关此结构的详细信息,请参阅 PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 请注意,即使函数失败,所提供的 CETCOMPAT 范围的一部分可能已成功处理。 调用方需要检查通过 Ranges 指定的每个 CETCOMPAT 范围中的标志,以确定它是否已成功处理。
注解
用户模式硬件强制的堆栈保护 (HSP) 是一种安全功能,CPU 通过采用影子堆栈机制(如果硬件支持)在运行时验证函数返回地址。 在 HSP 兼容模式下,只有认为与卷影堆栈 (CETCOMPAT) 兼容的模块中发生的影子堆栈冲突是致命的。 对于要被视为 CETCOMPAT 的模块,需要使用 CETCOMPAT 进行二进制文件编译,或使用 SetProcessDynamicEnforcedCetCompatibleRanges 进行标记以用于动态代码。 在 HSP 严格模式下,所有阴影堆栈冲突都是致命的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10版本 2004 (10.0;内部版本 19041.662) |
最低受支持的服务器 | Windows Server 版本 2004 (10.0;内部版本 19041.662) |
标头 | processthreadsapi.h |