Condividi tramite


Funzione GetLogicalProcessorInformationEx (sysinfoapi.h)

Recupera informazioni sulle relazioni tra processori logici e hardware correlato.

Sintassi

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

Parametri

[in] RelationshipType

Tipo di relazione da recuperare. Questo parametro può essere uno dei valori di LOGICAL_PROCESSOR_RELATIONSHIP seguenti.

Valore Significato
RelationProcessorCore
0
Recupera informazioni sui processori logici che condividono un singolo core del processore.
RelationNumaNode
1
Recupera informazioni sui processori logici che fanno parte dello stesso nodo NUMA.
RelationCache
2
Recupera informazioni sui processori logici che condividono una cache.
RelationProcessorPackage
3
Recupera informazioni sui processori logici che condividono un pacchetto fisico.
RelationGroup
4
Recupera informazioni sui processori logici che condividono un gruppo di processori.
RelationProcessorDie
5
Recupera informazioni sui processori logici che condividono un die del processore.
RelationNumaNodeEx
6
Recupera informazioni sui processori logici che fanno parte dello stesso nodo NUMA (con affinità completa).
RelationProcessorModule
7
Recupera informazioni sui processori logici che condividono un modulo del processore.
RelationAll
0xffff
Recupera informazioni sui processori logici per tutti i tipi di relazione (cache, nodo NUMA, core del processore, pacchetto fisico, gruppo di processori, processore die e modulo processore).

[out, optional] Buffer

Puntatore a un buffer che riceve una sequenza di strutture di SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX di dimensioni variabili. Se la funzione ha esito negativo, il contenuto di questo buffer non è definito.

[in, out] ReturnedLength

In input, specifica la lunghezza del buffer a cui punta Buffer, in byte. Se il buffer è sufficientemente grande da contenere tutti i dati, questa funzione ha esito positivo e ReturnedLength viene impostato sul numero di byte restituiti. Se il buffer non è sufficientemente grande da contenere tutti i dati, la funzione ha esito negativo, GetLastError restituisce ERROR_INSUFFICIENT_BUFFER e ReturnedLength viene impostata sulla lunghezza del buffer necessaria per contenere tutti i dati. Se la funzione ha esito negativo con un errore diverso da ERROR_INSUFFICIENT_BUFFER, il valore di ReturnedLength non è definito.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è TRUE e almeno una struttura SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX viene scritta nel buffer di output.

Se la funzione ha esito negativo, il valore restituito è FALSE. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Se un processo a 32 bit in esecuzione in WOW64 chiama questa funzione in un sistema con più di 64 processori, alcune delle maschere di affinità del processore restituite dalla funzione potrebbero non essere corrette. Ciò è dovuto al fatto che il DWORD di ordine elevato della struttura KAFFINITY a 64 bit che rappresenta tutti i 64 processori viene "piegato" in una struttura KAFFINITY a 32 bit nel buffer del chiamante. Di conseguenza, le maschere di affinità per i processori da 32 a 63 vengono rappresentate erroneamente come duplicati delle maschere per processori da 0 a 31. Inoltre, le maschere di affinità per i processori da 32 a 63 vengono erroneamente rappresentate come duplicati delle maschere per processori da 0 a 31. Inoltre, la somma di tutti i valori ActiveProcessorCount e MaximumProcessorCount per gruppo segnalati nelle strutture PROCESSOR_GROUP_INFO può escludere alcuni processori logici attivi.

Quando questa funzione viene chiamata con un tipo di relazione RelationProcessorCore, restituisce una struttura PROCESSOR_RELATIONSHIP per ogni core del processore attivo in ogni gruppo di processori del sistema. Si tratta di una procedura predefinita, perché un thread a 32 bit non a cui è possibile eseguire un thread a 32 bit in qualsiasi processore logico in un determinato gruppo, inclusi i processori da 32 a 63. Un chiamante a 32 bit può usare il numero totale di strutture PROCESSOR_RELATIONSHIP per determinare il numero effettivo di core del processore attivi nel sistema. Tuttavia, l'affinità di un thread a 32 bit non può essere impostata in modo esplicito sul processore logico da 32 a 63 di qualsiasi gruppo di processori.

Per compilare un'applicazione che usa questa funzione, impostare _WIN32_WINNT = 0x0601 >. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Comportamento a partire da Windows Server 2022 (21H2, build 20348)

Il comportamento di questa e di altre funzioni NUMA è stato modificato per supportare meglio i sistemi con nodi contenenti più di 64 processori. Per altre informazioni su questa modifica, incluse le informazioni sull'abilitazione del comportamento precedente di questa API, vedere Supporto NUMA.

Le richieste per RelationNumaNode restituiranno NUMA_NODE_RELATIONSHIP strutture che contengono solo l'affinità del nodo all'interno del gruppo primario. Il valore GroupCount sarà 1 e la dimensione della struttura è fissa.

Le richieste per RelationNumaNodeEx o RelationAll restituiranno NUMA_NODE_RELATIONSHIP strutture che contengono una matrice di affinità per il nodo su tutti i gruppi. GroupCount indica il numero di affinità e la dimensione della struttura è variabile.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione sysinfoapi.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX