Bereitstellen von Indikatordaten mit Version 2.0
Moderne Leistungsdatenanbieter verwenden ein Manifest, um die Indikatordaten 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 V2-Anbieter im Benutzermodus auf Windows Vista oder höher und Kernelmodus-V2-Anbieter auf Windows 7 oder höher.
Auf dieser Seite werden V2-Anbieter im Benutzermodus beschrieben. Informationen zu Kernelmodus-V2-Anbietern finden Sie unter Kernelmodus-Leistungsüberwachung.
Zur Laufzeit funktionieren V2-Anbieter wie folgt:
- Der Anbieterprozess registriert sich selbst beim Windows Leistungsindikatorsystem, indem PerfStartProvider und PerfSetCounterSetInfo aufgerufen werden. Der Anbieter stellt optional eine Rückruffunktion bereit, die über Consumeranforderungen benachrichtigt wird.
- Der Anbieterprozess fügt instanzen mit perfCreateInstance und PerfDeleteInstance nach Bedarf hinzu oder entfernt sie. Der Anbieter aktualisiert Leistungsindikatorwerte, wenn sie sich mithilfe von PerfSet-APIs ändern.
- Ein Consumer stellt eine Anforderung für Daten aus einem Counterset. Das System überprüft, ob der Aufrufer über Berechtigungen zum Sammeln der Daten verfügt. Das System verwendet dann einen Arbeitsthread, der im Anbieterprozess ausgeführt wird, um die Anforderung zu verarbeiten, und ruft ggf. die Rückruffunktion des Anbieters auf. Der Arbeitsthread 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 Indikatordaten definiert, die ihr Anbieter bereitstellt. Ausführliche Informationen zum Schreiben des Manifests finden Sie unter Schema für 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.
Fügen 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 Instanz des von Ihnen festgelegten Indikatorensatzes aufrufen.
Um die Zählerwerte festzulegen, rufen Sie eine der folgenden Funktionen auf:
Der Vorteil der Verwendung von PerfSetCounterRefValue besteht darin, dass Sie keinen Funktionsaufruf durchführen müssen, um den Indikatorwert festzulegen oder zu aktualisieren. Sie aktualisieren einfach Ihre lokale Indikatorvariable (die Variable, auf die die Verweispunkte verweisen), und Leistungsindikatoren verwenden den Zeiger, um auf den Indikatorwert zuzugreifen.
Wenn Sie PerfSetCounterRefValuenicht verwenden, können Sie die folgenden Funktionen verwenden, um den Indikatorwert zu erhöhen oder zu dekrementieren:
- PerfDecrementULongCounterValue
- PerfDecrementULongLongCounterValue
- PerfIncrementULongCounterValue
- PerfIncrementULongLongCounterValue
Bevor der Anbieter beendet wird, muss er die PerfDeleteInstance für jede erstellte Indikatorsatzinstanz aufrufen.
Wenn Sie das Rückrufattribut im Provider-Element im Manifest angegeben oder das -NotificationCallback-Argument beim Aufrufen von CTRPPverwendet haben, müssen Sie die ControlCallback-Rückruffunktion implementieren. Sie übergeben die Rückruffunktion an CounterInitialize.
Wenn Sie die -MemoryRoutines beim Aufrufen von CTRPPverwendet 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 LodCtr-Tool, um den Namen der Binärdatei, die die lokalisierten Ressourcenzeichenfolgen und Ressourcen-IDs enthält, in die Registrierung zu schreiben. Ausführliche Informationen zur Verwendung von LodCtr finden Sie unter Schema der Leistungsindikatoren.
Verwenden Sie beim Deinstallieren Ihres Anbieters das UnlodCtr-Tool, um die Informationen Ihres Anbieters aus der Registrierung zu entfernen.