Funzione KeGetProcessorNumberFromIndex (wdm.h)
La routine KeGetProcessorNumberFromIndex converte un indice del 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 PROCESSOR_NUMBER allocata dal chiamante in cui la routine scrive il numero di gruppo e il numero di processore relativo al gruppo del processore identificato da ProcIndex.
Valore restituito
KeGetProcessorNumberFromIndex restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti degli errori possibili includono quanto segue:
Codice restituito | Descrizione |
---|---|
STATUS_INVALID_PARAMETER | Il valore del parametro ProcIndex non è un indice del 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 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.
Esempio
L'esempio di codice seguente usa 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 | 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 |