Поделиться через


Функция 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

См. также

Несколько процессоров

Функции процессов и потоков

Процессы

Группы процессоров

SetProcessAffinityMask

SetThreadAffinityMask