Question

Quelqu'un sait d'une méthode permettant de créer des Compteurs de Performance à l'aide d'ordinaire non géré Visual C++?

Je sais que cela peut être fait facilement en utilisant le C++, mais j'ai besoin de le faire en utilisant un non gérés service Windows.

Je sais aussi que vous pouvez récupérer les données de compteur de performance, mais j'ai besoin de créer des compteurs personnalisés et d'un incrément pendant les applications de l'exécution.

Était-ce utile?

La solution

Voir ici:http://msdn.microsoft.com/en-us/library/aa371925.aspx

Il n'est pas vraiment dur, mais un peu fastidieux comme l'API implique l'utilisation extensive de l'auto-référentielle, des structures de longueur variable et doit de recourir à un mécanisme IPC pour obtenir les données de la surveillance du processus.

Autres conseils

Le support pour l'ajout de C++ les compteurs de performance changé dans Vista et au-delà.La Performance DLL approche proposée dans une autre réponse fonctionne toujours, mais la nouvelle technique décrite ici est plus facile à utiliser.

Dans cette approche vous écrire un manifeste qui décrit vos compteurs, exécutez CTRPP, un outil qui génère un code à partir de votre manifeste.Compiler et lier ce code avec votre application, et ajouter un appel à initialiser le processus (il démarre un thread d'arrière-plan), et ajoutez le code pour mettre à jour les compteurs que nécessaire.Les détails de la publication les compteurs sont traitées par le thread d'arrière-plan exécution du code généré.

Vous devez également exécuter lodctr /m:[fichier manifeste] pour enregistrer vos compteurs avant de pouvoir être utilisés.Ce doit être exécuté en tant qu'admin.

BTW:Un autre programme, unlodctr inverser l'effet de lodctr et doit être utilisé si vous apportez des modifications à votre comptoir parce qu'il n'y a pas de "remplacer" l'opération, seulement supprimer les vieux, puis installer la nouvelle.

<RANT>La Documentation de tous les ci-dessus est tout simplement horrible.Par exemple lodctr a été entièrement retravaillé pour Vista, mais la doc MSDN est tout pour la version pour XP et ne s'applique plus.Si vous visitez MSDN veuillez utiliser la fonction "Cette documentation n'est pas utile" bouton généreusement et peut-être que Microsoft va recevoir le message.</RANT>

Ne pas utiliser l'analyseur de performances ATL classes.Je sais qu'ils sont faciles à ajouter et qu'ils ont un assistant et tout, mais ils sont complètement buggé.J'ai ajouté à l'un de mes développement des applications au travail, puis a dû aller à travers et rip le code 6 mois plus tard.Dans l'ensemble, environ 3 semaines de travail perdues pour que le bruit.

Je cherchais quelque chose d'un petit plus facile à mettre en œuvre.Je vais probablement avoir à utiliser cette approche.J'ai aussi été montré par un collègue (merci PJ) qu'il y a un dessin à main levée tutoriel qui a été modifiée afin de montrer comment ajouter un Compteur de Performance à l'aide de classes ATL:PerformanceScribble De L'Échantillon:Suivi de la Performance dans une Application MFC

Le gros inconvénient ici est que actuellement mon application ne pas utiliser les MFC ou ATL, et j'aurais à ajouter le support pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top