KeGetCurrentProcessorNumber, fonction (ntddk.h)
La routine KeGetCurrentProcessorNumber retourne le numéro attribué par le système du processeur actuel sur lequel l’appelant est en cours d’exécution.
Syntaxe
ULONG KeGetCurrentProcessorNumber();
Valeur de retour
KeGetCurrentProcessorNumber retourne une valeur ULONG qui représente le processeur sur lequel l’appelant est en cours d’exécution.
Remarques
KeGetCurrentProcessorNumber pouvez être appelée pour déboguer l’utilisation des verrous de rotation sur les machines SMP pendant le développement du pilote. Un pilote peut également appeler KeGetCurrentProcessorNumber s’il a conservé certaines données par processeur et tenté de réduire la contention de ligne de cache.
Le nombre de processeurs d’une machine SMP est une valeur de base zéro.
Windows 7 et versions ultérieures de groupes de processeurs de prise en charge de Windows. Les pilotes conçus pour gérer des informations sur les groupes de processeurs doivent utiliser la routine KeGetCurrentProcessorNumberEx, qui spécifie un groupe de processeurs, au lieu d'KeGetCurrentProcessorNumber, qui ne le fait pas. Toutefois, l’implémentation de KeGetCurrentProcessorNumber dans Windows 7 et versions ultérieures de Windows fournit la compatibilité pour les pilotes écrits pour les versions antérieures de Windows. Dans cette implémentation, KeGetCurrentProcessorNumber retourne le numéro de processeur relatif au groupe si l’appelant s’exécute sur un processeur dans le groupe 0, qui est compatible avec le comportement de cette routine dans les versions antérieures de Windows qui ne prennent pas en charge les groupes de processeurs. Si l’appelant s’exécute sur un processeur dans un groupe autre que le groupe 0, cette routine retourne un nombre inférieur au nombre de processeurs dans le groupe 0. Ce comportement garantit que la valeur de retour est inférieure à la valeur de retour de la routine KeQueryActiveProcessorCount.
Si l’appel à KeGetCurrentProcessorNumber se produit à IRQL <= APC_LEVEL, un commutateur de processeur peut se produire entre les instructions. Par conséquent, les appelants de KeGetCurrentProcessorNumber s’exécutent généralement au >IRQL = DISPATCH_LEVEL.