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