Freigeben über


Erstellen einer Leistungserweiterungs-DLL

Wichtig

Aufgrund erheblicher Leistungs- und Zuverlässigkeitsbeschränkungen kann die in diesem Thema beschriebene Methode zum Bereitstellen von Leistungsindikatordaten geändert oder in Zukunft nicht mehr verfügbar sein. Stattdessen empfiehlt Microsoft, die unter Bereitstellen von Leistungsindikatordaten mit Version 2.0 beschriebene Methode zum Erstellen neuer Leistungsindikatoren zu verwenden und vorhandene Leistungsindikatoren zu migrieren, um auch diese Methode zu verwenden.

Ein V1-Anbieter verwendet eine Leistungs-DLL, die Zählerdaten für Consumer bereitstellt. Die Leistungs-DLL muss die Funktionen OpenPerformanceData, CollectPerformanceData und ClosePerformanceData exportieren. In der Regel verwenden Sie eine Moduldefinitionsdatei (.def), um die Funktionen aus der DLL zu exportieren. Das System ruft diese Funktionen auf, wenn ein Consumer Leistungsdaten abfragt.

Wenn ein Consumer RegQueryValueEx zum ersten Mal aufruft oder der Consumer die RegOpenKey - oder RegConnectRegistry-Funktion zum Öffnen HKEY_PERFORMANCE_DATAverwendet, ruft das System die OpenPerformanceData-Funktion für jeden Anbieter auf, der auf dem Computer registriert ist. Die Ausnahme ist, wenn der Anbieter die Liste der Objekte angibt, die er im Abschnitt der [objects] .INI-Datei unterstützt. In diesem Fall ruft das System den Anbieter nur auf, wenn eines der abgefragten Objekte mit einem Objekt aus der Liste übereinstimmt.

Die OpenPerformanceData-Funktion gibt jedem Anbieter die Möglichkeit, seine Leistungsdatenstrukturen zu initialisieren. Wenn die OpenPerformanceData-Funktion erfolgreich zurückgegeben wird, ruft das System die CollectPerformanceData-Funktion des Anbieters auf. Nachfolgende Aufrufe von RegQueryValueEx führen dazu, dass das System die CollectPerformanceData-Funktion aufruft .

Wenn der Consumer die Erfassung von Leistungsdaten abgeschlossen hat, wird in einem Aufruf der RegCloseKey-Funktion angegebenHKEY_PERFORMANCE_DATA. Dies bewirkt, dass das System die ClosePerformanceData-Funktion für jeden Anbieter aufruft. Die Anbieter werden dann entladen.

Es ist möglich, dass mehrere Consumer Leistungsdaten gleichzeitig sammeln. Das System ruft die Funktionen OpenPerformanceData und ClosePerformanceData nur einmal auf, wenn die DLL geladen oder entladen wird.

Hinweis

Stellen Sie sicher, dass Sie externes "C" in Ihren C++-Code einschließen, um zu verhindern, dass der Compiler Ihren Funktionsnamen Dekorationen hinzufügt. Andernfalls kann das System Ihre Funktionen möglicherweise nicht finden.

Hinweis

Wenn beim Laden der Leistungs-DLL, beim Suchen ihrer Funktionen oder beim Aufrufen Ihrer Funktionen ein Fehler auftritt, deaktiviert das System den Anbieter für nachfolgende Sammlungen innerhalb desselben Prozesses. Wenn dies während der Ausführung in einem privilegierten Prozess auftritt, fügt das System ihrem Leistungsschlüssel den Wert Leistungsindikatoren deaktivieren hinzu, um zu verhindern, dass der Anbieter in Zukunft geladen wird.

Weitere Informationen zum Schreiben einer Leistungs-DLL finden Sie in den folgenden Themen: