KeGetProcessorNumberFromIndex, fonction (ntifs.h)

La routine KeGetProcessorNumberFromIndex convertit un index de processeur à l’échelle du système en un numéro de groupe et un numéro de processeur relatif au groupe.

Syntaxe

NTSTATUS KeGetProcessorNumberFromIndex(
  [in]  ULONG             ProcIndex,
  [out] PPROCESSOR_NUMBER ProcNumber
);

Paramètres

[in] ProcIndex

Index de processeur à l’échelle du système. Si un système multiprocesseur contient un total de n processeurs logiques, les index de processeur valides vont de 0 à n-1.

[out] ProcNumber

Pointeur vers une structure de PROCESSOR_NUMBER allouée à l’appelant dans laquelle la routine écrit le numéro de groupe et le numéro de processeur relatif du groupe du processeur identifié par ProcIndex.

Valeur retournée

KeGetProcessorNumberFromIndex retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour d’erreur possibles sont les suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER
La valeur du paramètre ProcIndex n’est pas un index processeur valide.

Remarques

Cette routine accepte comme entrée un index de processeur qui identifie le processeur sur l’ensemble du système multiprocesseur. La valeur de sortie est une structure PROCESSOR_NUMBER qui identifie un processeur par son numéro de groupe et son numéro de processeur au sein du groupe.

Par exemple, si un système multiprocesseur contient deux groupes et que chaque groupe contient 64 processeurs logiques, les nombres de processeurs dans chaque groupe vont de 0 à 63, mais les index de processeur à l’échelle du système vont de 0 à 127.

Pour obtenir le nombre total de processeurs logiques actifs dans le système, appelez la routine KeQueryActiveProcessorCountEx .

La routine KeGetProcessorIndexFromNumber convertit un numéro de groupe et un numéro de processeur relatif au groupe en index de processeur à l’échelle du système.

Exemples

L’exemple de code suivant utilise les routines KeQueryActiveProcessorCountEx et KeGetProcessorNumberFromIndex pour énumérer tous les processeurs logiques actifs dans le système :

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.
    ...
}

La valeur constante ALL_PROCESSOR_GROUPS est définie dans Winnt.h et Ntdef.h.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
Plateforme cible Universal
En-tête ntifs.h (inclure Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau

Voir aussi

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER