Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les composants en mode noyau fournissent des compteurs de performances à l’aide des API Compteurs de performances pour Windows (PCW).
Utilisez les étapes suivantes pour développer de nouveaux fournisseurs de données de compteur :
Écrivez un manifeste de compteur qui décrit le fournisseur et ses ensembles de compteurs. Le manifeste du compteur est un fichier au format XML qui définit le fournisseur de compteur de performances et ses compteurs.
- Définissez l’attribut
applicationIdentitysur le nom d’un fichier binaire qui sera installé dans le cadre de votre composant en mode noyau et qui contiendra les ressources de chaîne nécessaires aux consommateurs de données de performance. - Affectez à l'attribut
providerTypela valeurkernelMode. - Définissez au moins un
structélément (souscounterSet/structs) avec le nom d’une structure C/C++ qui sera utilisée lors du passage des valeurs de compteur de votre composant aux API PCW. - Dans chaque
counter, définissez lestructetfieldà partir duquel PCW doit lire la valeur du compteur.
- Définissez l’attribut
Dans le cadre du processus de génération de votre composant, utilisez l’outil CTRPP pour compiler le manifeste du compteur. (L’outil CTRPP (Counter Preprocessor) est inclus dans le WDK et est disponible à l’invite de commandes développeur en tapant
ctrpp.) L’outil CTRPP génère un.rcfichier et un.hfichier.- Le fichier généré
.rcpar CTRPP doit être compilé par l’outil compilateur de ressources (RC.exe), et le fichier résultant.resdoit être lié au fichier binaire nommé dans l’attributapplicationIdentity. Vous pouvez soit compiler directement le fichier généré par.rcCTRPP, soit#includele fichier généré par.rcCTRPP dans un fichier existant.rcqui est en cours de compilation dans le fichier binaire. - Le fichier généré par
.hCTRPP contient des fonctions d’assistance qui encapsulent les API PCW sous-jacentes. Par exemple, le fichier généré par.hCTRPP contient une fonction RegisterXxx qui appellePcwRegisteren votre nom. Dans la plupart des cas, vous appelez les fonctions d’assistance générées par CTRPP au lieu d’appeler directement les API PCW, mais vous pouvez consulter la documentation des API PCW pour comprendre ce que font les fonctions générées par CTRPP correspondantes. Les fonctions d’assistance gèrent la traduction de la disposition des données de compteur du composant dans laPCW_DATAdisposition attendue par les API PCW.
- Le fichier généré
Lors de l’initialisation du composant, appelez la fonction RegisterXxx générée par CTRPP, qui appelle PcwRegister. À l’arrêt du composant, appelez la fonction UnregisterXxx générée par CTRPP, qui appelle PcwUnregister.
Ajoutez du code pour fournir des données de compteur. Pour ce faire, vous implémentez une fonction de rappel PCW_CALLBACK ou en conservant des structures de données avec des valeurs de compteur pour chaque instance et en appelant les fonctions CreateInstanceXxx et CloseInstanceXxx générées par CTRPP lorsque les instances sont créées et détruites.
Lors de l’installation du composant, utilisez
lodctr /m:<CounterManifest> <InstallPath>pour installer le fournisseur. Lors de la désinstallation du composant, utilisezunlodctr(avec/mou/gdes paramètres) pour désinstaller le fournisseur. L’installation du fournisseur ajoute les compteurs du fournisseur à un référentiel à l’échelle du système de compteurs disponibles afin que les compteurs puissent être utilisés par les consommateurs de données de performance tels que perfmon, typeperf ou WMI. En particulier, l’installation du fournisseur enregistre le chemin d’accès complet au fichier binaire (fichier DLL, SYS ou EXE) qui contient la table de chaînes du fournisseur. Le chemin complet du fichier binaire est déterminé en combinant l’attribut duapplicationIdentitymanifeste avec les<CounterManifest>valeurs et<InstallPath>utilisées sur lalodctrligne de commande comme suit :- Si l’attribut
applicationIdentityest un chemin d’accès complet, il sera utilisé. - Sinon, si le
<InstallationPath>paramètre est un chemin d’accès complet, il sera utilisé. - Sinon, si le
<CounterManifest>paramètre est un chemin d’accès complet, le répertoire de<CounterManifest>sera combiné avec le nom de fichier de l’attributapplicationIdentity. - Sinon, le répertoire de travail actuel sera combiné avec le nom de fichier de l’attribut
applicationIdentity.
- Si l’attribut
Pour obtenir un exemple de fournisseur PCW en mode noyau, consultez l’exemple de compteur de noyau (Kcs) dans le référentiel d’exemples de pilotes Windows sur GitHub.
Voir aussi
Analyse des performances en mode noyau