GetLogicalProcessorInformationEx-Funktion (sysinfoapi.h)

Ruft Informationen zu den Beziehungen von logischen Prozessoren und zugehöriger Hardware ab.

Syntax

BOOL GetLogicalProcessorInformationEx(
  [in]            LOGICAL_PROCESSOR_RELATIONSHIP           RelationshipType,
  [out, optional] PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer,
  [in, out]       PDWORD                                   ReturnedLength
);

Parameter

[in] RelationshipType

Der Typ der abzurufenden Beziehung. Dieser Parameter kann einer der folgenden LOGICAL_PROCESSOR_RELATIONSHIP Werte sein.

Wert Bedeutung
RelationProcessorCore
0
Ruft Informationen zu logischen Prozessoren ab, die einen einzelnen Prozessorkern gemeinsam nutzen.
RelationNumaNode
1
Ruft Informationen zu logischen Prozessoren ab, die Teil desselben NUMA-Knotens sind.
RelationCache
2
Ruft Informationen zu logischen Prozessoren ab, die einen Cache gemeinsam nutzen.
RelationProcessorPackage
3
Ruft Informationen zu logischen Prozessoren ab, die ein physisches Paket gemeinsam nutzen.
RelationGroup
4
Ruft Informationen zu logischen Prozessoren ab, die eine Prozessorgruppe gemeinsam nutzen.
RelationProcessorDie
5
Ruft Informationen zu logischen Prozessoren ab, die einen Prozessor-Die gemeinsam nutzen.
RelationNumaNodeEx
6
Ruft Informationen zu logischen Prozessoren ab, die Teil desselben NUMA-Knotens (mit voller Affinität) sind.
RelationProcessorModule
7
Ruft Informationen zu logischen Prozessoren ab, die ein Prozessormodul gemeinsam nutzen.
RelationAll
0xffff
Ruft Informationen zu logischen Prozessoren für alle Beziehungstypen ab (Cache, NUMA-Knoten, Prozessorkern, physisches Paket, Prozessorgruppe, Prozessor-Die und Prozessormodul).

[out, optional] Buffer

Ein Zeiger auf einen Puffer, der eine Sequenz von SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Strukturen mit variabler Größe empfängt. Wenn die Funktion fehlschlägt, ist der Inhalt dieses Puffers nicht definiert.

[in, out] ReturnedLength

Gibt bei der Eingabe die Länge des Puffers an, auf den buffer in Bytes verweist. Wenn der Puffer groß genug ist, um alle Daten zu enthalten, ist diese Funktion erfolgreich, und ReturnedLength wird auf die Anzahl der zurückgegebenen Bytes festgelegt. Wenn der Puffer nicht groß genug ist, um alle Daten zu enthalten, schlägt die Funktion fehl, GetLastError gibt ERROR_INSUFFICIENT_BUFFER zurück, und ReturnedLength ist auf die Pufferlänge festgelegt, die erforderlich ist, um alle Daten zu enthalten. Wenn die Funktion mit einem anderen Fehler als ERROR_INSUFFICIENT_BUFFER fehlschlägt, ist der Wert von ReturnedLength nicht definiert.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE, und mindestens eine SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Struktur wird in den Ausgabepuffer geschrieben.

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn ein 32-Bit-Prozess, der unter WOW64 ausgeführt wird, diese Funktion auf einem System mit mehr als 64 Prozessoren aufruft, sind einige der von der Funktion zurückgegebenen Prozessoraffinitätsmasken möglicherweise falsch. Dies liegt daran, dass das hochgeordnete DWORD der 64-Bit-KAFFINITY-Struktur, die alle 64 Prozessoren darstellt, in eine 32-Bit-KAFFINITY-Struktur im Puffer des Aufrufers "gefaltet" wird. Daher werden die Affinitätsmasken für die Prozessoren 32 bis 63 fälschlicherweise als Duplikate der Masken für die Prozessoren 0 bis 31 dargestellt. Darüber hinaus werden die Affinitätsmasken für die Prozessoren 32 bis 63 fälschlicherweise als Duplikate der Masken für die Prozessoren 0 bis 31 dargestellt. Darüber hinaus kann die Summe aller gruppenspezifischen ActiveProcessorCount - und MaximumProcessorCount-Werte , die in PROCESSOR_GROUP_INFO-Strukturen gemeldet werden, einige aktive logische Prozessoren ausschließen.

Wenn diese Funktion mit dem Beziehungstyp RelationProcessorCore aufgerufen wird, gibt sie eine PROCESSOR_RELATIONSHIP-Struktur für jeden aktiven Prozessorkern in jeder Prozessorgruppe im System zurück. Dies ist beabsichtigt, da ein nichtaffinitierter 32-Bit-Thread auf jedem logischen Prozessor in einer bestimmten Gruppe ausgeführt werden kann, einschließlich der Prozessoren 32 bis 63. Ein 32-Bit-Aufrufer kann die Gesamtanzahl der PROCESSOR_RELATIONSHIP-Strukturen verwenden, um die tatsächliche Anzahl der aktiven Prozessorkerne im System zu bestimmen. Die Affinität eines 32-Bit-Threads kann jedoch nicht explizit auf den logischen Prozessor 32 bis 63 einer Prozessorgruppe festgelegt werden.

Um eine Anwendung zu kompilieren, die diese Funktion verwendet, legen Sie _WIN32_WINNT >= 0x0601 fest. Weitere Informationen finden Sie unter Verwenden der Windows-Header.

Verhalten ab Windows Server 2022 (21H2, Build 20348)

Das Verhalten dieser und anderer NUMA-Funktionen wurde geändert, um Systeme mit Knoten mit mehr als 64 Prozessoren besser zu unterstützen. Weitere Informationen zu dieser Änderung, einschließlich Informationen zum Aktivieren des alten Verhaltens dieser API, finden Sie unter NUMA-Unterstützung.

Anforderungen für RelationNumaNode geben NUMA_NODE_RELATIONSHIP Strukturen zurück, die nur die Affinität des Knotens innerhalb der primären Gruppe enthalten. Der GroupCount-Wert ist 1, und die Strukturgröße ist festgelegt.

Anforderungen für RelationNumaNodeEx oder RelationAll geben NUMA_NODE_RELATIONSHIP Strukturen zurück, die ein Array von Affinitäten für den Knoten über alle Gruppen enthalten. Die GroupCount meldet die Anzahl der Affinitäten, und die Größe der Struktur ist variabel.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile sysinfoapi.h (windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX