Verwenden der Registrierungsfunktionen zum Nutzen von Zählerdaten

Verwenden Sie die Registrierungsfunktionen , um Leistungsdaten aus dem speziellen HKEY_PERFORMANCE_DATA Registrierungsschlüssel zu sammeln.

Leistungsdaten werden nicht tatsächlich in der Registrierung gespeichert. Das Aufrufen der Registrierungsfunktionen bewirkt, dass das System die Daten vom entsprechenden Leistungsdatenanbieter sammelt.

Hinweis

Normalerweise sollten Sie die Registrierungsfunktionen nicht verwenden, um Zählerdaten zu nutzen. Stattdessen sollten Sie die PdH-Funktionen (Performance Data Helper) verwenden. Die PDH-Funktionen sind einfacher zu verwenden und vermeiden viele Leistungs- und Zuverlässigkeitsprobleme, die durch falsche Verwendung der Registrierungsfunktionen auftreten können.

Hinweis

Sie können die Registrierungsfunktionen nicht verwenden, wenn Sie Windows OneCore Apps schreiben. Verwenden Sie stattdessen PerfLib V2 Consumer-Funktionen.

Die Registrierungsfunktionen sind die low-level-API zum Sammeln von Daten von V1-Anbietern. Die Registrierungsfunktionen unterstützen auch das Sammeln von Daten von V2-Anbietern über eine Übersetzungsebene, die die V2 Consumer-Funktionen aufruft.

Rufen Sie die RegQueryValueEx-Funktion auf, um Leistungsdaten aus dem lokalen System zu erhalten. Verwenden Sie HKEY_PERFORMANCE_DATA als Schlüssel. Der erste Aufruf öffnet den Schlüssel. Sie müssen den Schlüssel zuerst nicht explizit öffnen.

Rufen Sie die RegConnectRegistry-Funktion auf, um Leistungsdaten von einem Remotesystem abzurufen. Verwenden Sie den Computernamen des Remotesystems, und verwenden Sie HKEY_PERFORMANCE_DATA als Schlüssel. Dieser Aufruf ruft einen Schlüssel ab, der die Leistungsdaten für das Remotesystem darstellt. Verwenden Sie diesen Schlüssel anstelle des HKEY_PERFORMANCE_DATA Schlüssels, um die Daten abzurufen.

Stellen Sie sicher, dass Sie die RegCloseKey-Funktion verwenden, um das Handle für den Schlüssel zu schließen, wenn Sie die Leistungsdaten abgerufen haben. Dies ist sowohl für die lokalen als auch für Remotefälle wichtig:

  • RegCloseKey(HKEY_PERFORMANCE_DATA) schließt ein Registrierungshandle nicht, löscht jedoch alle zwischengespeicherten Daten und gibt die geladenen Leistungs-DLLs frei.
  • RegCloseKey(hkeyRemotePerformanceData) schließt das Handle für die Registrierung des Remotecomputers.

Wichtig

Rufen Sie während DLL_PROCESS_DETACHnicht aufRegCloseKey(HKEY_PERFORMANCE_DATA).

Sie verwenden den lpValueName Parameter der RegQueryValueEx-Funktion , um die abzurufenden Informationen anzugeben. In der folgenden Tabelle sind die Werte aufgeführt, die Sie für lpValueNameangeben können. Beachten Sie, dass bei den Wertzeichenfolgen die Groß-/Kleinschreibung nicht beachtet wird.

Wert Beschreibung
Global Ruft Leistungsdaten für alle Leistungsobjekte ab, die auf dem Computer registriert sind, mit Ausnahme der in der Costly Kategorie enthaltenen.
OLD_Global Windows Vista und höher: Ruft Leistungsdaten für alle V1-Leistungsobjekte ab, die auf dem Computer registriert sind, mit Ausnahme derjenigen, die in der Costly Kategorie enthalten sind. Verwenden Sie dies anstelle von Global , um unnötige V2-Anbieterdaten zu vermeiden, wenn Sie wissen, dass die relevanten Daten von einem V1-Anbieter stammen.
n1 n2 ... Ruft Leistungsdaten für ein oder mehrere Leistungsobjekte ab. Geben Sie den Dezimalindex an, der jedem Objekt zugeordnet ist, das Sie in einer durch Leerzeichen getrennten Liste abrufen möchten. Wenn Sie beispielsweise System- und Memory-Objekte abrufen möchten und ermittelt haben, dass die Indizes der entsprechenden Namenszeichenfolgen 2 und 4 sind, geben Sie die Zeichenfolge "2 4"an. Beachten Sie, dass die Abfrage eine andere Anzahl von Objekten zurückgeben kann, als Sie angefordert haben. Dies kann passieren, wenn das angegebene Objekt nicht verfügbar ist, das angegebene Objekt von einem anderen Objekttyp abhängt oder wenn ein Anbieter auf andere Weise Daten zurückgibt, die nicht direkt angefordert wurden. Beispielsweise hängen Threads von Prozessen ab. Wenn Sie Also Daten vom Thread -Objekt anfordern, enthalten die Ergebnisse Daten aus dem Process -Objekt.
Counter n Ruft Namenszeichenfolgen für den angegebenen Sprachbezeichner ab, z. B. Englisch für Counter 9. Verwenden Sie die zurückgegebenen Namenszeichenfolgen, um den Index zu finden, der einem bestimmten Namen entspricht, oder um den Namen zu finden, der einem bestimmten Index entspricht. Weitere Informationen finden Sie unter Abrufen von Leistungsindikatornamen und Hilfetext . Beachten Sie, dass die zurückgegebene Liste sowohl Objektnamen (Counterset) als auch Zählernamen enthält. Es gibt keine einfache Möglichkeit, zu bestimmen, ob ein Name ein Objektname oder ein Indikatorname ist.
Help n Ruft Hilfezeichenfolgen für den angegebenen Sprachbezeichner ab, z. B. Englisch für Help 9. Verwenden Sie die zurückgegebenen Hilfezeichenfolgen, um Beschreibungen zu finden, die objekt(counterset) oder Counter-Hilfeindizes entsprechen. Weitere Informationen finden Sie unter Abrufen von Leistungsindikatornamen und Hilfetext .
Costly Veraltet: Ruft Leistungsdaten für Objekttypen ab, deren Daten in Bezug auf Prozessorzeit oder Arbeitsspeicherauslastung teuer zu erfassen sind. Diese Sammlung kann auf einem stark geladenen Computer einige Minuten dauern. Sie sollten die Sammlung in einem Workerthread ausführen, wenn Ihre Anwendung während dieser Datensammlung auf den Benutzer reagieren muss.
MetadataGlobal Windows 10 20H1 und höher: Ruft Metadaten für alle Leistungsobjekte ab, die auf dem Computer registriert sind, mit Ausnahme der in der Costly Kategorie enthaltenen Objekte.
OLD_MetadataGlobal Windows 10 20H1 und höher: Ruft Metadaten für alle V1-Leistungsobjekte ab, die auf dem Computer registriert sind, mit Ausnahme der in der Costly Kategorie enthaltenen Objekte.
MetadataCostly Windows 10 20H1 und höher: Ruft Metadaten für kostspielige Leistungsobjekte ab.
OLD_MetadataCostly Windows 10 20H1 und höher: Ruft Metadaten für kostspielige V1-Leistungsobjekte ab.

Ausführliche Informationen zum Format der von der Registrierung zurückgegebenen Leistungsdaten finden Sie unter Leistungsdatenformat.

Ein Beispiel zum Abrufen der Namen und Beschreibungen der registrierten Leistungsindikatoren auf dem Computer finden Sie unter Abrufen von Leistungsindikatornamen und Hilfetext.

Ein Beispiel, das auf die Komponenten der Leistungsdaten zugreift, finden Sie unter Anzeigen von Objekt-, Instanz- und Leistungsindikatornamen.

Ein Beispiel zum Abrufen, Berechnen und Drucken von Leistungsindikatorenwerten finden Sie unter Abrufen von Zählerdaten und Berechnen von Zählerwerten.

Metadatensammlung

Windows 10 20H1 bietet Unterstützung für reine Metadatensammlungsvorgänge. Diese Vorgänge dienen zum Erstellen einer Liste der Leistungsobjekte und Leistungsindikatoren, die auf einem Computer verfügbar sind.

  • Die reine Metadatensammlung kann schneller sein als die entsprechende Volldatensammlung, da sie das Sammeln instance Daten von Objekten überspringen kann, die die reine Metadatensammlung unterstützen.
  • Die reine Metadatensammlung benötigt weniger Arbeitsspeicher als die entsprechende Sammlung mit vollständigen Daten, da sie keinen Speicherplatz benötigt, um instance Daten von Objekten zurückzugeben, die die reine Metadatensammlung unterstützen.
  • Die reine Metadatensammlung ist vollständiger als die entsprechende Sammlung mit vollständigen Daten, da sie die Liste der verfügbaren Leistungsindikatoren zurückgibt, auch wenn keine Instanzen von Objekten vorhanden sind, die die Reine Metadatenauflistung unterstützen.

Tipp

Eine angemessene Verwendung der reinen Metadatensammlung ist besonders wichtig, wenn Daten von Servern mit vielen Prozessen oder Threads gesammelt werden. Eine normale Global Auflistung muss Informationen zu jedem Prozess und Thread im System sammeln und zurückgeben, während MetadataGlobal die Sammlung keine Prozess- oder Threadinformationen sammeln muss.

Die PDH-Funktionen (Performance Data Helper) verwenden automatisch die reine Metadatensammlung, wenn sie den Satz von Leistungsobjekten bestimmen, die auf einem Computer verfügbar sind.

Die Betriebssystemunterstützung für reine Metadatenvorgänge wird durch einen Wert ungleich 0 (null) im HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\Supports Metadata Registrierungswert angegeben. Wenn dieser Wert nicht vorhanden oder auf 0festgelegt ist, verwenden Sie anstelle einer reinen Metadatensammlung (z. B. ) eine Vollständige Datensammlung (z. GlobalB. MetadataGlobal).

Nicht alle Leistungsobjekte unterstützen die reine Metadatensammlung. Wenn Sie eine MetadataGlobal Sammlung anfordern, überprüft Windows jedes Leistungsobjekt auf reine Metadatenunterstützung (angegeben durch einen Wert ungleich null im HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>\Performance\Collect Supports Metadata Registrierungswert). Wenn das Leistungsobjekt keine reine Metadatensammlung unterstützt, führt Windows eine normale Datensammlung aus dem -Objekt aus. Wenn das Leistungsobjekt die reine Metadatensammlung unterstützt, führt Windows eine reine Metadatenauflistung aus dem -Objekt aus. Die Daten, die für eine reine Metadatenabfrage an Sie zurückgegeben werden, enthalten PERF_OBJECT_TYPE dann Blöcke sowohl aus der Vollständigdaten- als auch aus der Reinmetadatensammlung. Die PERF_OBJECT_TYPE Blöcke können instance Informationen enthalten oder weglassen, je nachdem, ob der Block von einem Anbieter gesammelt wurde, der nur Metadatenabfragen unterstützt oder nicht.

Die daten, die von einer reinen Metadatenauflistung zurückgegeben werden, sind identisch mit den Daten aus einer normalen Auflistung, außer:

  • Das NumInstances Feld der PERF_OBJECT_TYPE Struktur ist entweder PERF_METADATA_MULTIPLE_INSTANCES (was angibt, dass das Objekt 0 oder mehr benannte Instanzen unterstützt) oder PERF_METADATA_NO_INSTANCES (gibt an, dass das Objekt immer 1 unbenannte instance hat).
  • Nach der PERF_OBJECT_TYPE Struktur gibt es keine PERF_INSTANCE_DEFINITION Blöcke.

Perflib

Der HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib Registrierungsschlüssel unterstützt mehrere DWORD Werte im Zusammenhang mit der Leistungsindikatorsammlung. Diese sollten für das Standardverhalten in der Regel nicht festgelegt sein, können aber von einem Administrator bei Bedarf für bestimmte Szenarien konfiguriert werden.

  • Configuration Flags: Der Standardwert ist 0. Kann auf eine Kombination der folgenden Flags festgelegt werden, um ein besonderes Verhalten zu ermöglichen:
    • 0x01: Testen Sie Plug-Ins nicht auf Fehler bei der Datenpufferausrichtung. Standardmäßig überprüft das System die Pufferausrichtung von Plug-Ins.
    • 0x02: Deaktivieren Sie Plug-Ins nicht automatisch. Standardmäßig deaktiviert das System Plug-Ins, die abstürzen oder ein falsches Verhalten aufweisen.
    • 0x04: Überprüfen Sie die Integrität des Plug-In-Puffers nicht. Standardmäßig sucht das System nach Überschreitungen des Plug-In-Puffers.
    • 0x08: Überprüfen Sie nicht nach Plug-In-Timeouts. Standardmäßig überprüft das System, ob das Plug-In hängt.
  • Disable Performance Counters: Der Standardwert ist 0. Wenn dieser Wert auf 1 festgelegt ist, wird die Sammlung von V1-Leistungsindikatoren für das System deaktiviert.
  • ExtCounterTestLevel: Der Standardwert ist 4. Steuert, wie viel Validierung das System durchführt, um sich vor falschem Plug-In-Verhalten zu schützen. Einzelheiten dazu finden Sie unter PM_COLLECT_PROC.