Création d’une DLL d’extension de performance
Important
En raison des limitations de performances et de fiabilité significatives, la méthode permettant de fournir des données de compteurs de performances que cette rubrique décrit peut être modifiée ou non disponible à l’avenir. Au lieu de cela, Microsoft vous recommande d’utiliser la méthode décrite dans la rubrique fourniture de données de compteur à l’aide de la Version 2,0 pour la création de nouveaux compteurs de performances et la migration des compteurs de performances existants afin d’utiliser également cette méthode.
Un fournisseur v1 utilise une dll de performance qui fournit des données de compteur aux consommateurs. La DLL de performance doit exporter les fonctions OpenPerformanceData, CollectPerformanceDataet ClosePerformanceData . En général, 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 avec succès, le système appelle la fonction CollectPerformanceData du fournisseur. Les appels suivants à RegQueryValueEx provoquent 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 échec RegCloseKey . Cela amène le système à appeler la fonction ClosePerformanceData pour chaque fournisseur. Les fournisseurs sont ensuite déchargés.
Plusieurs consommateurs peuvent collecter des données de performances en même temps. Le système appelle les fonctions OpenPerformanceData et ClosePerformanceData une seule fois chaque fois que la dll est chargée ou déchargée.
Notes
Veillez à inclure extern "C" dans votre code C++ pour empêcher le compilateur d’ajouter des décorations à vos noms de fonction. 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 performance, de la recherche de vos fonctions ou de l’appel de vos fonctions, le système désactive le fournisseur pour les collections suivantes au sein du même processus. En outre, si cela se produit lors de l’exécution dans un processus privilégié, le système ajoute une valeur de désactivation des compteurs de performances à votre clé de performance pour empêcher le fournisseur d’être chargé à l’avenir.
Pour plus d’informations sur l’écriture d’une DLL de performance, consultez les rubriques suivantes :