Afficher en anglais

Partage via


KeGetProcessorNumberFromIndex, fonction (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

C++
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 PROCESSOR_NUMBER allouée par 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 de retour

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

Retourner le code 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 numéros de processeur de chaque groupe sont compris entre 0 et 63, mais les index de processeur à l’échelle du système sont compris entre 0 et 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 :

C++
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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows 7 et versions ultérieures de Windows.
plateforme cible Universel
d’en-tête wdm.h (include 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