Bereitstellen von Zählerdaten mit Version 2.0
Moderne Leistungsdatenanbieter verwenden ein Manifest, um die Leistungsindikatordaten zu definieren, und verwenden Leistungsindikatoranbieter-APIs, um Daten im Kontext des Anbieters zu verwalten. Anbieter, die mithilfe von Manifest- und Leistungsindikatoranbieter-APIs implementiert werden, werden häufig als V2-Anbieter bezeichnet. Windows unterstützt Anbieter im Benutzermodus V2 unter Windows Vista oder höher und Anbieter im Kernelmodus V2 unter Windows 7 oder höher.
Auf dieser Seite werden Anbieter für den Benutzermodus V2 beschrieben. Informationen zu Kernelmodus-V2-Anbietern finden Sie unter Leistungsüberwachung des Kernelmodus.
Zur Laufzeit funktionieren V2-Anbieter wie folgt:
- Der Anbieterprozess registriert sich selbst beim Windows-Leistungsindikatorsystem, indem Er PerfStartProvider und PerfSetCounterSetInfo aufruft. Der Anbieter stellt optional eine Rückruffunktion bereit, die über Consumeranforderungen benachrichtigt wird.
- Der Anbieterprozess fügt Instanzen nach Bedarf mithilfe von PerfCreateInstance und PerfDeleteInstance hinzu oder entfernt diese. Der Anbieter aktualisiert Zählerwerte, wenn sie sich mithilfe von PerfSet***-APIs ändern.
- Ein Consumer stellt eine Anforderung für Daten aus einer Zählermenge. Das System überprüft, ob der Aufrufer über Berechtigungen zum Sammeln der Daten verfügt. Das System verwendet dann einen Workerthread, der im Anbieterprozess ausgeführt wird, um die Anforderung zu verarbeiten, und ruft ggf. die Rückruffunktion des Anbieters auf. Der Workerthread kopiert die gesammelten Daten in einen vom System verwalteten Puffer, und das System gibt die Daten dann an den Consumer zurück.
Schritte zum Erstellen eines Anbieters
Schreiben Sie ein Manifest, das die Zählerdaten definiert, die Ihr Anbieter bereitstellt. Ausführliche Informationen zum Schreiben des Manifests finden Sie unter Schema der Leistungsindikatoren.
Verwenden Sie CTRPP , um den Vorlagencode zu generieren, den Sie in Ihren Anbieter einschließen. Der Vorlagencode enthält die Strukturen, die die Indikatorensätze definieren, die Funktionen CounterInitialize und CounterCleanup sowie die Ressourcenzeichenfolgen.
Ihr Anbieter muss die Funktionen CounterInitialize und CounterCleanup aufrufen. CounterInitialize ruft die PerfStartProvider-Funktion auf, um den Anbieter zu registrieren, und ruft auch die PerfSetCounterSetInfo-Funktion auf, um den Indikatorsatz zu initialisieren. CounterCleanup ruft die PerfStopProvider-Funktion auf, um die Registrierung des Anbieters zu entfernen.
Schließen Sie den Vorlagencode aus dem vorherigen Schritt in Ihr Projekt ein, und schließen Sie Ihren Anbieter ab.
Um den Anbieter abzuschließen, müssen Sie die PerfCreateInstance-Funktion für jede instance des von Ihnen bereitgestellten Zählersatzes aufrufen.
Rufen Sie eine der folgenden Funktionen auf, um die Zählerwerte festzulegen:
Der Vorteil der Verwendung von PerfSetCounterRefValue besteht darin, dass Sie keinen Funktionsaufruf ausführen müssen, um den Zählerwert festzulegen oder zu aktualisieren, sie aktualisieren einfach Ihre lokale Zählervariable (die Variable, auf die die Verweispunkte festgelegt werden) und leistungsindikatoren den Zeiger verwenden, um auf den Zählerwert zuzugreifen.
Wenn Sie PerfSetCounterRefValue nicht verwenden, können Sie die folgenden Funktionen verwenden, um den Zählerwert zu erhöhen oder zu verringern:
- PerfDecrementULongCounterValue
- PerfDecrementULongLongCounterValue
- PerfIncrementULongCounterValue
- PerfIncrementULongLongCounterValue
Bevor der Anbieter beendet wird, muss er die PerfDeleteInstance für jeden Leistungsindikatorsatz aufrufen, instance er erstellt hat.
Wenn Sie das Rückrufattribut im provider-Element in Ihrem Manifest angegeben oder beim Aufrufen von CTRPP das Argument -NotificationCallback verwendet haben, müssen Sie die Rückruffunktion ControlCallback implementieren. Sie übergeben die Rückruffunktion an CounterInitialize.
Wenn Sie beim Aufrufen von CTRPP die -MemoryRoutines verwendet haben, müssen Sie die Rückruffunktionen AllocateMemory und FreeMemory implementieren. Sie übergeben die Rückruffunktionen an CounterInitialize.
Verwenden Sie bei der Installation Ihres Anbieters das Tool LodCtr, um den Namen der Binärdatei mit den lokalisierten Ressourcenzeichenfolgen und Ressourcen-IDs in die Registrierung zu schreiben. Ausführliche Informationen zur Verwendung von LodCtr finden Sie unter Leistungsindikatorenschema.
Verwenden Sie beim Deinstallieren Ihres Anbieters das Tool UnlodCtr, um die Informationen Ihres Anbieters aus der Registrierung zu entfernen.