Funzione KeGetProcessorNumberFromIndex (ntifs.h)
La routine KeGetProcessorNumberFromIndex converte un indice processore a livello di sistema in un numero di gruppo e un numero di processore relativo al gruppo.
Sintassi
NTSTATUS KeGetProcessorNumberFromIndex(
[in] ULONG ProcIndex,
[out] PPROCESSOR_NUMBER ProcNumber
);
Parametri
[in] ProcIndex
Indice del processore a livello di sistema. Se un sistema multiprocessore contiene un totale di n processori logici, gli indici del processore validi vanno da 0 a n-1.
[out] ProcNumber
Puntatore a una struttura di PROCESSOR_NUMBER allocata dal chiamante in cui la routine scrive il numero di gruppo e il numero del processore relativo al gruppo del processore identificato da ProcIndex.
Valore restituito
KeGetProcessorNumberFromIndex restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti di errore possibili includono quanto segue:
Codice restituito | Descrizione |
---|---|
|
Il valore del parametro ProcIndex non è un indice processore valido. |
Commenti
Questa routine accetta come input un indice del processore che identifica il processore nell'intero sistema multiprocessore. Il valore di output è una struttura PROCESSOR_NUMBER che identifica un processore in base al numero di gruppo e al relativo numero di processore all'interno del gruppo.
Ad esempio, se un sistema multiprocessore contiene due gruppi e ogni gruppo contiene 64 processori logici, i numeri del processore in ogni gruppo sono compresi tra 0 e 63, ma gli indici del processore a livello di sistema sono compresi tra 0 e 127.
Per ottenere il numero totale di processori logici attivi nel sistema, chiamare la routine KeQueryActiveProcessorCountEx .
La routine KeGetProcessorIndexFromNumber converte un numero di gruppo e un numero di processore relativo al gruppo in un indice del processore a livello di sistema.
Esempio
Nell'esempio di codice seguente vengono utilizzate le routine KeQueryActiveProcessorCountEx e KeGetProcessorNumberFromIndex per enumerare tutti i processori logici attivi nel sistema:
ULONG Count;
ULONG ProcIndex;
PROCESSOR_NUMBER ProcNumber;
Count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
for (ProcIndex = 0; ProcIndex < Count; ProcIndex += 1)
{
KeGetProcessorNumberFromIndex(ProcIndex, &ProcNumber);
// Do something with the contents of ProcNumber.
...
}
Il valore costante ALL_PROCESSOR_GROUPS è definito in Winnt.h e Ntdef.h.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 |
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Qualsiasi livello |