Функция 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.
Комментарии
Маска сходства процессов — это битовый вектор, в котором каждый бит представляет процессоры, на которых разрешено выполнять процесс. Маска сходства системы — это битовый вектор, в котором каждый бит представляет процессоры, настроенные в системе.
Маска сходства процессов — это подмножество маски сходства системы. Процесс может выполняться только на процессорах, настроенных в системе. Таким образом, маска сходства процессов не может указать 1 бит для процессора, если системная маска сходства указывает 0 бит для этого процессора.
Начиная с Windows 11 и Windows Server 2022, в системе с более чем 64 процессорами сходство процессов и потоков по умолчанию охватывает все процессоры в системе во всех группах процессоров. Функция GetProcessAffinityMask задает для lpProcessAffinityMask и lpSystemAffinityMask маски процесса и системного процессора в основной группе процесса. Если процесс явно задал сходство одного или нескольких своих потоков за пределами основной группы процесса, функция возвращает ноль для обеих масок сходства. Однако если hHandle задает дескриптор для текущего процесса, функция всегда использует основную группу вызывающего потока (которая по умолчанию совпадает с основной группой процесса), чтобы задать lpProcessAffinityMask и lpSystemAffinityMask.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |