Fonction KeGetProcessorNumberFromIndex (wdm.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 au 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 de 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 de chaque groupe vont de 0 à 63, mais les index de processeur à l’échelle du système varient 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 | Disponible dans Windows 7 et versions ultérieures de Windows. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure Ntddk.h, Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | N’importe quel niveau |