Funzione KeGetProcessorNumberFromIndex (wdm.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 sono compresi tra 0 e 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 identificato da ProcIndex.
Valore restituito
KeGetProcessorNumberFromIndex restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I possibili valori restituiti dall'errore includono quanto segue:
Codice restituito | Descrizione |
---|---|
STATUS_INVALID_PARAMETER | Il valore del parametro ProcIndex non è un indice processore valido. |
Osservazioni
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 di 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.
Esempi
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.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Windows 7 e versioni successive di Windows. |
piattaforma di destinazione | Universale |
intestazione | wdm.h (include Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | Qualsiasi livello |