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
STATUS_INVALID_PARAMETER
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

Vedi anche

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER