Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
подпрограмма KeQueryNodeActiveAffinity получает текущее сходство процессора указанного узла в многопроцессорной системе с неоднородным доступом к памяти (NUMA).
Синтаксис
void KeQueryNodeActiveAffinity(
[in] USHORT NodeNumber,
[out, optional] PGROUP_AFFINITY Affinity,
[out, optional] PUSHORT Count
);
Параметры
[in] NodeNumber
Номер узла. Если многопроцессорная система содержит n узлов, узлы нумеруются от 0 до n-1. Чтобы получить самый высокий номер узла (n-1) в системе, вызовите подпрограмму KeQueryHighestNodeNumber.
[out, optional] Affinity
Указатель на выделенный вызывающим буфером, в который подпрограмма записывает GROUP_AFFINITY структуру. Эта структура содержит номер группы, содержащей узел, который определяется NodeNumber, и маску сходства, указывающую, какие логические процессоры в узле активны. Этот параметр можно задать для null, если эти сведения не требуются.
Начиная с Windows Server 2022 узел может охватывать несколько групп. Это происходит, когда узел содержит более 64 процессоров. В этом случае ОС назначает основную группу для каждого узла NUMA. Основная группа всегда является одной из них, содержащей большинство процессоров. В этом случае возвращается структура сходства групп для основной группы узла. Дополнительные сведения об этом изменении поведения см. в поддержки NUMA. Если код выполняется в системах с более чем 64 процессорами на узел NUMA, рекомендуется вместо этого использовать KeQueryNodeActiveAffinity2.
[out, optional] Count
Указатель на расположение, в которое подпрограмма записывает количество активных процессоров, представленных в маске сходства узлов, на которую указывает affinity. Этот параметр можно задать для null, если эти сведения не требуются.
Начиная с Windows Server 2022, возвращается счетчик для основной группы узла. Дополнительные сведения о первичных группах см. выше.
Возвращаемое значение
Никакой
Замечания
Выделенный вызывающим буфером, на который указывает параметр Affinity, должен быть достаточно большим, чтобы содержать структуру GROUP_AFFINITY. Элемент Mask этой структуры содержит маску сходства, указывающую, какие процессоры активны. Если процессор активен, соответствующий бит в маске является одним. Все остальные биты равны нулю.
В многопроцессорной архитектуре NUMA узел представляет собой коллекцию процессоров, которые совместно используют быстрый доступ к области памяти. Доступ к памяти не является универсальным, так как процессор может получить доступ к памяти в узле быстрее, чем он может получить доступ к памяти в других узлах.
Число процессоров в узле не может превышать количество битов в маске сходства в структуре, на которую указывает affinity. Маска сходства также определяет максимальное количество процессоров в группе.
В Windows 10 версии 2004 и более ранних версиях, если во время инициализации системы Windows встречает аппаратный узел NUMA, содержащий более логические процессоры, чем будет помещаться в группу, Windows разбивает узел на меньшие логические узлы. Каждый из этих узлов не превышает максимальный размер группы. Параметр NodeNumber определяет логический узел. Чтобы получить максимальное количество процессоров для каждой группы, вызовите процедуру KeQueryMaximumProcessorCountEx.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows 7 и более поздних версиях Windows. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |