KeSetHardwareCounterConfiguration, fonction (ntddk.h)
La routine KeSetHardwareCounterConfiguration spécifie une liste de compteurs matériels à utiliser pour le profilage des threads.
Syntaxe
NTSTATUS KeSetHardwareCounterConfiguration(
[in] PHARDWARE_COUNTER CounterArray,
[in] ULONG Count
);
Paramètres
[in] CounterArray
Pointeur vers un tableau HARDWARE_COUNTER qui décrit la configuration du compteur matériel à utiliser pour le profilage des threads. Chaque élément de tableau est une structure qui décrit un compteur matériel. Avant que la routine ne retourne, elle copie le contenu de ce tableau dans ses structures de données internes.
[in] Count
Spécifie le nombre d’éléments du tableau pointés par le paramètre CounterArray.
Valeur de retour
KeSetHardwareCounterConfiguration 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 count dépasse le nombre maximal de compteurs spécifiés par la constante MAX_HW_COUNTERS, qui est définie dans le fichier d’en-tête Ntddk.h. |
STATUS_WMI_ALREADY_ENABLED | Un ou plusieurs compteurs spécifiés dans le tableau CounterArray sont déjà activés. |
STATUS_NOT_IMPLEMENTED | Cette routine n’est pas implémentée pour l’architecture du processeur sur laquelle l’appelant s’exécute. |
Remarques
Dans Windows 7, cette routine est implémentée uniquement pour les architectures x86, x64 et Itanium. Si un appelant s’exécute sur une architecture de processeur qui n’est pas prise en charge, la routine retourne STATUS_NOT_IMPLEMENTED.
Cette routine indique au système d’exploitation quels compteurs matériels utiliser pour le profilage des threads. Appelez cette routine uniquement lorsque le profilage de thread est désactivé. Si le tableau CounterArray spécifie les compteurs matériels actuellement utilisés, la routine échoue et retourne STATUS_WMI_ALREADY_ENABLED.
Un thread d’application peut permettre au profilage de thread d’obtenir un ensemble de mesures de performances à partir des compteurs matériels de l’unité de surveillance des performances (PMU) du processeur local. Le système d’exploitation ne prend en charge qu’une seule application de profilage à la fois. Les instances simultanées d’une application de profilage de thread ne sont pas prises en charge. Un thread peut activer le profilage des threads lui-même, mais pas pour d’autres threads.
Lorsque le profilage de thread est activé, le système d’exploitation utilise les compteurs matériels spécifiés dans le dernier appel pour KeSetHardwareCounterConfiguration. Chaque appel KeSetHardwareCounterConfiguration remplace toute configuration de compteur matériel qui a pu être définie dans un appel précédent KeSetHardwareCounterConfiguration.
Définissez Count = 0 pour spécifier une configuration de compteur matériel vide. Cette configuration empêche efficacement l’utilisation de compteurs matériels pour le profilage des threads. La configuration du compteur matériel par défaut qui existe après le démarrage du système et avant l'KeSetHardwareCounterConfiguration appel est une configuration vide.
L’effet d’un appel KeSetHardwareCounterConfiguration réussi est global. Si un thread d’un processus est profilé, le profileur utilise la configuration du compteur matériel qui a été définie par le dernier appel à KeSetHardwareCounterConfiguration. Dans un système multiprocesseur, un appel KeSetHardwareCounterConfiguration définit la configuration du compteur matériel à utiliser pour le profilage des threads sur tous les processeurs du système, bien que chaque processeur utilise son propre ensemble de compteurs matériels.
Pour éviter les conflits de ressources, tous les pilotes qui utilisent des ressources de compteur doivent utiliser les HalAllocateHardwareCounters et HalFreeHardwareCounters routines pour coordonner leur partage de ces ressources.
Pour déterminer si le profilage de thread est activé pour un thread donné, appelez la fonction QueryThreadProfiling.
Pour interroger le système d’exploitation pour la configuration du compteur matériel actuellement en vigueur pour le profilage de thread, appelez la routine KeQueryHardwareCounterConfiguration routine.
Le logiciel de virtualisation ne virtualise généralement pas les compteurs de performances matérielles. Par conséquent, les compteurs de performances matérielles sont peu susceptibles d’être disponibles dans une machine virtuelle.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 7. |
plateforme cible | Universel |
d’en-tête | ntddk.h (include Ntddk.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Voir aussi
Informations de référence sur le profilage des compteurs matériels