Freigeben über


KeQueryNodeActiveAffinity-Funktion (wdm.h)

Die KeQueryNodeActiveAffinity-Routine ruft die aktuelle Prozessoraffinität eines angegebenen Knotens in einem Multiprozessorsystem ab, das über eine NUMA-Architektur (Non-Uniform Memory Access) verfügt.

Syntax

void KeQueryNodeActiveAffinity(
  [in]            USHORT          NodeNumber,
  [out, optional] PGROUP_AFFINITY Affinity,
  [out, optional] PUSHORT         Count
);

Parameter

[in] NodeNumber

Die Knotennummer. Wenn ein Multiprozessorsystem n Knoten enthält, werden die Knoten von 0 bis n-1 nummeriert. Um die höchste Knotennummer (n-1) im System zu erhalten, rufen Sie die KeQueryHighestNodeNumber-Routine auf.

[out, optional] Affinity

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, in den die Routine eine GROUP_AFFINITY-Struktur schreibt. Diese Struktur enthält die Gruppennummer der Gruppe, die den durch NodeNumber identifizierten Knoten enthält, und eine Affinitätsmaske, die angibt, welche logischen Prozessoren im Knoten aktiv sind. Sie können diesen Parameter auf NULL festlegen, wenn Sie diese Informationen nicht benötigen.

Ab Windows Server 2022 kann sich ein Knoten über mehrere Gruppen erstrecken. Dies geschieht, wenn ein Knoten mehr als 64 Prozessoren enthält. In diesem Fall weist das Betriebssystem jedem NUMA-Knoten eine primäre Gruppe zu. Die primäre Gruppe ist immer die Gruppe, die die meisten Prozessoren enthält. In diesem Fall gilt die zurückgegebene Gruppenaffinitätsstruktur für die primäre Gruppe des Knotens. Weitere Informationen zu dieser Verhaltensänderung finden Sie unter NUMA-Unterstützung. Wenn Ihr Code auf Systemen mit mehr als 64 Prozessoren pro NUMA-Knoten ausgeführt wird, sollten Sie stattdessen KeQueryNodeActiveAffinity2 verwenden.

[out, optional] Count

Ein Zeiger auf einen Speicherort, in den die Routine die Anzahl der aktiven Prozessoren schreibt, die in der Knotenaffinitätsmaske dargestellt werden, auf die durch Affinität verwiesen wird. Sie können diesen Parameter auf NULL festlegen, wenn Sie diese Informationen nicht benötigen.

Ab Windows Server 2022 gilt die zurückgegebene Anzahl für die primäre Gruppe des Knotens. Weitere Informationen zu primären Gruppen finden Sie oben.

Rückgabewert

Keine

Bemerkungen

Der vom Aufrufer zugeordnete Puffer, auf den der Affinity-Parameter verweist, muss groß genug sein, um eine GROUP_AFFINITY-Struktur zu enthalten. Der Mask-Member dieser Struktur enthält eine Affinitätsmaske, die angibt, welche Prozessoren aktiv sind. Wenn ein Prozessor aktiv ist, ist das entsprechende Bit in der Maske eins. Alle anderen Bits sind null.

In einer NUMA-Multiprozessorarchitektur ist ein Knoten eine Sammlung von Prozessoren, die schnellen Zugriff auf eine Speicherregion gemeinsam nutzen. Der Arbeitsspeicherzugriff ist nicht einheitlich, da ein Prozessor schneller auf den Arbeitsspeicher in seinem Knoten zugreifen kann als auf den Arbeitsspeicher auf anderen Knoten.

Die Anzahl der Prozessoren in einem Knoten darf die Anzahl der Bits in der Affinitätsmaske in der Struktur, auf die von Affinity verwiesen wird, nicht überschreiten. Die Affinitätsmaske bestimmt auch die maximale Anzahl von Prozessoren in einer Gruppe.

Wenn Windows in Windows 10, Version 2004 und früheren Versionen, während der Systeminitialisierung auf einen NUMA-Hardwareknoten stößt, der mehr logische Prozessoren enthält, als in eine Gruppe passen, teilt Windows den Knoten in kleinere logische Knoten auf. Jeder dieser Knoten überschreitet die maximale Gruppengröße nicht. Der Parameter NodeNumber identifiziert einen logischen Knoten. Um die maximale Anzahl von Prozessoren pro Gruppe zu erhalten, rufen Sie die KeQueryMaximumProcessorCountEx-Routine auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 7 und späteren Windows-Versionen.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Weitere Informationen

KeQueryNodeActiveAffinity2

KeQueryLogicalProcessorRelationship

GROUP_AFFINITY

KeQueryHighestNodeNumber

KeQueryHighestNodeNumber

KeQueryMaximumProcessorCountEx