2008-09-11 12 views
5

Kennt jemand eine Methode zum Erstellen benutzerdefinierter Leistungsindikatoren mit normalem nicht verwaltetem Visual C++?Erstellen von benutzerdefinierten Leistungsindikatoren in Visual C++

Ich weiß, dass es mit verwalteten C++ leicht gemacht werden kann, aber ich muss es mit einem nicht verwalteten Windows-Dienst tun.

Ich weiß auch, dass Sie Leistungsindikatordaten abrufen können, aber ich muss einige benutzerdefinierte Leistungsindikatoren erstellen und während der Anwendungslaufzeit erhöhen.

Antwort

6

Siehe hier: http://msdn.microsoft.com/en-us/library/aa371925.aspx

Es ist nicht wirklich schwer, aber ein bisschen langweilig wie die API beinhaltet umfangreiche Nutzung von selbstreferentiell, mit variabler Länge Strukturen und hat einig IPC-Mechanismus verwenden, um die Daten zu erhalten, aus der überwachte Prozess.

1

Ich war auf der Suche nach etwas etwas einfacher zu implementieren. Ich werde wahrscheinlich diesen Ansatz verwenden müssen. Ich war auch von einem Kollegen (danke PJ) gezeigt, dass es ein Scribble-Tutorial, das modifiziert wurde, um zu zeigen, wie ein Leistungsindikatoren mit ATL-Klassen hinzuzufügen: PerformanceScribble Sample: Performance Monitoring in an MFC Application

Der große Nachteil hierbei ist, dass zur Zeit meine Anwendung doesn‘ t verwende MFC oder ATL, und ich würde die Unterstützung dafür hinzufügen müssen.

2

Verwenden Sie nicht die ATL-Leistungsmonitorklassen. Ich weiß, dass sie leicht hinzuzufügen sind und sie haben einen Zauberer und alles, aber sie sind hoffnungslos abgehört. Ich habe sie einer meiner Entwicklungs-Apps bei der Arbeit hinzugefügt und musste 6 Monate später den Code durcharbeiten. Alles in allem ca. 3 Wochen Arbeit verloren zu diesem Lärm.

4

Die Unterstützung für das Hinzufügen von C++ - Leistungsindikatoren wurde in Vista und darüber hinaus geändert. Der Performance-DLL-Ansatz, der in einer anderen Antwort vorgeschlagen wird, funktioniert immer noch, aber die neue Technik here ist einfacher zu verwenden.

In diesem Ansatz schreiben Sie ein Manifest, das Ihre Leistungsindikatoren beschreibt, führen Sie CTRPP aus, ein Tool, das Code aus Ihrem Manifest generiert. Kompilieren und verknüpfen Sie diesen Code mit Ihrer Anwendung und fügen Sie einen Aufruf hinzu, um den Prozess zu initialisieren (er startet einen Hintergrundthread), und fügen Sie Code hinzu, um die Leistungsindikatoren nach Bedarf zu aktualisieren. Die Details zum Veröffentlichen der Leistungsindikatoren werden von dem Hintergrundthread verarbeitet, der den generierten Code ausführt.

Sie müssen auch lodctr/m: [Manifestdatei] ausführen, um Ihre Zähler zu registrieren, bevor sie verwendet werden können. Dies muss als Administrator ausgeführt werden.

BTW: Ein anderes Programm, unlodctr umgekehrt den Effekt von lodctr und muss verwendet werden, wenn Sie Änderungen an Ihren Leistungsindikatoren vornehmen, da es keine "ersetzen" -Operation gibt, löschen Sie nur die alte, dann installieren Sie die neue.

<RANT> Dokumentation für alle oben genannten ist einfach nur schrecklich. Zum Beispiel wurde lodctr für Vista komplett überarbeitet, aber das Dokument in MSDN ist alles für die XP-Version und nicht mehr gültig. Wenn Sie MSDN besuchen, verwenden Sie bitte die Schaltfläche "Diese Dokumentation ist nicht hilfreich", und vielleicht wird Microsoft die Nachricht erhalten. </RANT >

Verwandte Themen