getProcessAffinityMask 函数 (winbase.h)
检索指定进程的进程关联掩码和系统的系统相关性掩码。
语法
BOOL GetProcessAffinityMask(
[in] HANDLE hProcess,
[out] PDWORD_PTR lpProcessAffinityMask,
[out] PDWORD_PTR lpSystemAffinityMask
);
参数
[in] hProcess
需要关联掩码的进程句柄。
此句柄必须具有 PROCESS_QUERY_INFORMATION 或 PROCESS_QUERY_LIMITED_INFORMATION 访问权限。 有关详细信息,请参阅 进程安全性和访问权限。
Windows Server 2003 和 Windows XP: 句柄必须具有 PROCESS_QUERY_INFORMATION 访问权限。
[out] lpProcessAffinityMask
指向接收指定进程的关联掩码的变量的指针。
[out] lpSystemAffinityMask
指向接收系统的关联掩码的变量的指针。
返回值
如果函数成功,则返回值为非零值,并且函数将 lpProcessAffinityMask 和 lpSystemAffinityMask 指向的变量设置为适当的关联掩码。
在具有 64 个以上的处理器的系统上,如果调用进程的线程位于单个处理器组中,该函数会将 lpProcessAffinityMask 和 lpSystemAffinityMask 指向的变量设置为进程关联掩码以及该组的活动逻辑处理器的处理器掩码。 如果调用进程包含多个组中的线程,则函数将返回这两个关联掩码的零。
如果函数失败,则返回值为零,并且 lpProcessAffinityMask 和 lpSystemAffinityMask 指向的变量的值是未定义的。 要获得更多的错误信息,请调用 GetLastError。
注解
进程相关性掩码是一个位向量,其中每个位表示允许进程在其中运行的处理器。 系统相关性掩码是位向量,其中每个位表示已配置为系统的处理器。
进程相关性掩码是系统相关性掩码的子集。 仅允许在配置为系统中的处理器上运行进程。 因此,当系统关联掩码为该处理器指定 0 位时,进程关联掩码不能为处理器指定 1 位。
从 Windows 11 和 Windows Server 2022 开始,在具有 64 个以上的处理器、进程和线程相关性的系统上,默认情况下跨所有处理器组的所有处理器。 GetProcessAffinityMask 函数将 lpProcessAffinityMask 和 lpSystemAffinityMask 设置为进程和系统处理器掩码,以覆盖进程的主要组。 如果进程已显式设置进程主组外部的一个或多个线程的相关性,则函数将返回这两个关联掩码的零。 但是,如果 hHandle 指定当前进程的句柄,则函数始终使用调用线程的主组 (,该组默认与进程的主组) 相同,以便设置 lpProcessAffinityMask 和 lpSystemAffinityMask。
要求
最低受支持的客户端 | Windows XP [桌面应用|UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用|UWP 应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |