Erstellen anderer Registrierungseinträge
Wie unter Erstellen des Leistungsschlüssels der Anwendung beschrieben, muss eine Komponente, die Leistungsindikatordaten bereitstellt, einen Leistungsschlüssel unter dem Schlüssel Dienste enthalten, und der Leistungsschlüssel muss die Werte Bibliothek, Öffnen, Sammeln und Schließen enthalten. In bestimmten Fällen muss Ihre Komponente möglicherweise zusätzliche Registrierungswerte konfigurieren.
Metadaten
MetadataGlobal
und MetadataCostly
sind reine Metadatenabfragen, die von Windows 10 20H1 und höher generiert werden. Sie ermöglichen es einem Benutzer, Metadaten (Objektinformationen und Indikatorinformationen) abzurufen, ohne eine potenziell teure Datensammlung durchzuführen. Es wird erwartet, dass die reine Metadatenabfrage die gleichen Ergebnisse wie die entsprechende Global
Oder Costly
-Abfrage zurückgibt, mit der Ausnahme, dass NumInstances
auf PERF_METADATA_MULTIPLE_INSTANCES
(für ein Objekt mit mehreren instance) oder PERF_METADATA_NO_INSTANCES
(für ein Objekt mit einem instance) festgelegt werden sollte, und das Ergebnis sollte alle PERF_INSTANCE_DEFINITION
Blöcke weglassen.
Wenn Ihre Leistungs-DLL - und MetadataCostly
-Abfragetypen unterstütztMetadataGlobal
, sollte sie dies angeben, indem sie ihrem Performance
Schlüssel einen REG_DWORD
Wert Collect Supports Metadata
hinzufügt und den Wert auf 1 festlegen. Wenn Collect Supports Metadata
nicht vorhanden oder auf 0 festgelegt ist, führt eine reine Metadatenabfrage ein Fallback auf eine Global
- oder Costly
-Abfrage aus.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\application-name
\Performance
Collect Supports Metadata = 1
Bindung
Die OpenPerformanceData-Funktion der Leistungs-DLL verwendet ein Zeichenfolgenargument als Eingabe. Um ihrer geöffneten Funktion eine Eingabezeichenfolge bereitzustellen, fügen Sie einen Linkage-Schlüssel unter Ihren Dienstschlüssel ein. Der Linkage-Schlüssel enthält einen Exportwert . Legen Sie die Wertdaten für Export auf die Eingabezeichenfolge fest, die Sie an Ihre geöffnete Funktion übergeben möchten. Der Datentyp von Export ist REG_MULTI_SZ.
Wenn Export nicht definiert ist (Export ist optional), übergibt das System NULL an Ihre OpenPerformanceData-Funktion .
Wenn mehrere Anwendungen dieselbe Leistungs-DLL verwenden, enthält jede Anwendung in der Regel einen Linkage-Schlüssel und einen Exportwert , um kontextabhängig zu sein, welche Anwendung die DLL aufruft.
Im Folgenden werden die Registrierungseinträge veranschaulicht:
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\application-name-1
\Linkage
Export = app-1 context strings
\Performance
Library = perfctrs.dll
\application-name-2
\Linkage
Export = app-2 context strings
\Performance
Library = perfctrs.dll
Timeout
Standardmäßig müssen die Funktionen OpenPerformanceData und CollectPerformanceData der Leistungs-DLL innerhalb von 10.000 Millisekunden zurückgeben. Wenn dies nicht der Fall ist, verwendet das System nicht die Daten, die die DLL zurückgibt. Die Anwendung kann den Timeoutwert erhöhen oder verringern, indem sie den Registrierungswert Open Timeout oder Collect Timeout unter dem Leistungsschlüssel angibt, wie im folgenden Beispiel gezeigt.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\application-name
\Performance
Open Timeout = Timeout value for your open function, in milliseconds
Collect Timeout = Timeout value for your collect function, in milliseconds
DOS-Geräte
Zum Abrufen der Leistungsdaten für einige Anwendungen (solche, die Leistungsindikatoren mithilfe der DeviceIoControl-Funktion zurückgeben), müssen Sie die CreateFile-Funktion verwenden, um das der Anwendung zugeordnete Gerät zu öffnen. In diesem Fall muss der in CreateFile angegebene Name auch im Knoten DOS-Geräte der Registrierung installiert werden, wie hier gezeigt:
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\Session Manager
\DOS Devices