Fourniture de données de compteur à l’aide de la version 2.0

Les fournisseurs de données de performances modernes utilisent un manifeste pour définir les données du compteur et utilisent les API du fournisseur de compteurs de performances pour gérer les données dans le contexte du fournisseur. Les fournisseurs implémentés à l’aide d’un manifeste et des API de fournisseur de compteurs de performances sont souvent appelés fournisseurs V2. Windows prend en charge les fournisseurs V2 en mode utilisateur sur Windows Vista ou version ultérieure et les fournisseurs V2 en mode noyau sur Windows 7 ou version ultérieure.

Cette page décrit les fournisseurs V2 en mode utilisateur. Pour plus d’informations sur les fournisseurs V2 en mode noyau, consultez Analyse des performances du mode noyau.

Au moment de l’exécution, les fournisseurs V2 fonctionnent comme suit :

  • Le processus du fournisseur s’inscrit auprès du système compteur de performances Windows en appelant PerfStartProvider et PerfSetCounterSetInfo. Le fournisseur fournit éventuellement une fonction de rappel qui sera avertie des demandes des consommateurs.
  • Le processus du fournisseur ajoute ou supprime des instances selon les besoins à l’aide de PerfCreateInstance et PerfDeleteInstance. Le fournisseur met à jour les valeurs des compteurs lorsqu’elles changent à l’aide des API PerfSet***.
  • Un consommateur effectue une demande de données à partir d’un compteur. Le système vérifie que l’appelant dispose des autorisations nécessaires pour collecter les données. Le système utilise ensuite un thread de travail en cours d’exécution dans le processus du fournisseur pour gérer la demande, en appelant la fonction de rappel du fournisseur, le cas échéant. Le thread de travail copie les données collectées dans une mémoire tampon gérée par le système, puis le système retourne les données au consommateur.

Étapes de création d’un fournisseur

  1. Écrivez un manifeste qui définit les données de compteur que votre fournisseur fournira. Pour plus d’informations sur l’écriture du manifeste, consultez Schéma des compteurs de performances.

  2. Utilisez CTRPP pour générer le code de modèle que vous incluez dans votre fournisseur. Le code du modèle inclut les structures qui définissent les jeux de compteurs, les fonctions CounterInitialize et CounterCleanup , ainsi que les chaînes de ressources.

    Votre fournisseur doit appeler les fonctions CounterInitialize et CounterCleanup . CounterInitialize appelle la fonction PerfStartProvider pour inscrire le fournisseur et appelle également la fonction PerfSetCounterSetInfo pour initialiser le jeu de compteurs. CounterCleanup appelle la fonction PerfStopProvider pour supprimer l’inscription du fournisseur.

  3. Incluez le code de modèle de l’étape précédente dans votre projet et complétez votre fournisseur.

    Pour terminer le fournisseur, vous devez appeler la fonction PerfCreateInstance pour chaque instance du jeu de compteurs que vous fournissez.

    Pour définir les valeurs de compteur, appelez l’une des fonctions suivantes :

    L’avantage de l’utilisation de PerfSetCounterRefValue est que vous n’avez pas besoin d’effectuer un appel de fonction pour définir ou mettre à jour la valeur du compteur, vous mettez simplement à jour votre variable de compteur locale (la variable vers laquelle pointe la référence) et les compteurs de performances utilisent le pointeur pour accéder à la valeur du compteur.

    Si vous n’utilisez pas PerfSetCounterRefValue, vous pouvez utiliser les fonctions suivantes pour incrémenter ou décrémenter la valeur du compteur :

    Avant de quitter le fournisseur, il doit appeler perfDeleteInstance pour chaque jeu de compteurs instance qu’il a créé.

    Si vous avez spécifié l’attribut de rappel dans l’élément provider de votre manifeste ou utilisé l’argument -NotificationCallback lors de l’appel de CTRPP, vous devez implémenter la fonction de rappel ControlCallback . Vous passez la fonction de rappel à CounterInitialize.

    Si vous avez utilisé - MemoryRoutines lors de l’appel de CTRPP, vous devez implémenter les fonctions de rappel AllocateMemory et FreeMemory . Vous passez les fonctions de rappel à CounterInitialize.

  4. Lors de l’installation de votre fournisseur, utilisez l’outil LodCtr pour écrire le nom du fichier binaire qui contient les chaînes de ressources localisées et les ID de ressource dans le Registre. Pour plus d’informations sur l’utilisation de LodCtr, consultez Schéma des compteurs de performances.

  5. Lors de la désinstallation de votre fournisseur, utilisez l’outil UnlodCtr pour supprimer les informations de votre fournisseur du registre.