Partager via


Création d’une DLL d’extension de performances

Important

En raison de limitations importantes en matière de performances et de fiabilité, la méthode de fourniture de données de compteur de performances décrite dans cette rubrique peut être modifiée ou indisponible à l’avenir. Au lieu de cela, Microsoft vous recommande d’utiliser la méthode décrite dans Fournir des données de compteur à l’aide de la version 2.0 pour créer de nouveaux compteurs de performances et de migrer les compteurs de performances existants pour utiliser cette méthode également.

Un fournisseur V1 utilise une DLL de performances qui fournit des données de compteur aux consommateurs. La DLL de performances doit exporter les fonctions OpenPerformanceData, CollectPerformanceData et ClosePerformanceData . En règle générale, vous utilisez un fichier de définition de module (.def) pour exporter les fonctions à partir de la DLL. Le système appelle ces fonctions lorsqu’un consommateur interroge des données de performances.

La première fois qu’un consommateur appelle RegQueryValueEx, ou si le consommateur utilise la fonction RegOpenKey ou RegConnectRegistry pour ouvrir HKEY_PERFORMANCE_DATA, le système appelle la fonction OpenPerformanceData pour chaque fournisseur inscrit sur l’ordinateur. L’exception est si le fournisseur spécifie la liste des objets qu’il prend en charge dans la [objects] section du fichier .INI. Dans ce cas, le système appelle le fournisseur uniquement si l’un des objets interrogés correspond à un objet de la liste.

La fonction OpenPerformanceData donne à chaque fournisseur la possibilité d’initialiser ses structures de données de performances. Ensuite, si la fonction OpenPerformanceData retourne correctement, le système appelle la fonction CollectPerformanceData du fournisseur. Les appels suivants à RegQueryValueEx entraînent l’appel de la fonction CollectPerformanceData par le système.

Lorsque le consommateur termine la collecte des données de performances, il spécifie HKEY_PERFORMANCE_DATA dans un appel à la fonction RegCloseKey . Le système appelle ainsi la fonction ClosePerformanceData pour chaque fournisseur. Les fournisseurs sont ensuite déchargés.

Il est possible pour plusieurs consommateurs de collecter des données de performances en même temps. Le système appelle OpenPerformanceData et ClosePerformanceData ne fonctionne qu’une seule fois chaque fois que la DLL est chargée ou déchargée.

Notes

Veillez à inclure « C » extern dans votre code C++ pour empêcher le compilateur d’ajouter des décorations aux noms de vos fonctions ; dans le cas contraire, le système risque de ne pas trouver vos fonctions.

Notes

Si une erreur se produit lors du chargement de votre DLL de performances, de la recherche de vos fonctions ou de l’appel de vos fonctions, le système désactive le fournisseur pour les regroupements suivants au sein du même processus. En outre, si cela se produit lors de l’exécution d’un processus privilégié, le système ajoute une valeur Désactiver les compteurs de performances à votre clé de performances pour empêcher le chargement du fournisseur à l’avenir.

Pour plus d’informations sur l’écriture d’une DLL de performances, consultez les rubriques suivantes :