Erstellen einer Abfrage
Um eine neue Abfrage zu erstellen, die Leistungsdaten aus einer Echtzeitquelle oder Protokolldatei sammelt, rufen Sie die PdhOpenQuery-Funktion auf. Die Funktion gibt ein Handle für die Abfrage zurück, die Sie in nachfolgenden PDH-Funktionsaufrufen verwenden.
Rufen Sie nach dem Erstellen der Abfrage die PdhAddCounter-Funktion für jeden Leistungsindikator auf, den Sie der Abfrage hinzufügen möchten. Sie können eine der folgenden Methoden verwenden, um den vollqualifizierten Zählerpfad bereitzustellen.
- Definieren Sie den Zählerpfad als statische Zeichenfolge. Verwenden Sie diese Methode, wenn Sie immer denselben Zähler überwachen und wenn Sie mit der richtigen Syntax eines Zählerpfads vertraut sind. Informationen zur richtigen Syntax, die zum Angeben eines Leistungsindikators verwendet wird, finden Sie unter Angeben eines Leistungsindikatorpfads.
- Initialisieren Sie eine PDH_COUNTER_PATH_ELEMENTS-Struktur mit den Namen des Computers, des Objekts, des Zählers und instance. Übergeben Sie diese Struktur an PdhMakeCounterPath , wodurch ein Zählerpfad für die angegebenen Elemente zurückgegeben wird.
- Geben Sie einen Zählerpfad an, der Feldhalterzeichen enthält, und rufen Sie PdhExpandWildCardPath auf, um eine Liste von Zählernamen abzurufen, die den Feldhalterzeichen im Pfad entsprechen. Überprüfen Sie die Liste der Leistungsindikatorennamen, und fügen Sie der Abfrage die Indikatoren hinzu, die Sie aus dieser Liste benötigen.
- Rufen Sie die PdhBrowseCounters-Funktion auf, um ein Dialogfeld anzuzeigen, mit dem der Benutzer Leistungsindikatoren durchsuchen und auswählen kann. Weitere Informationen finden Sie unter Durchsuchen von Leistungsindikatoren.
Beachten Sie, dass PdhAddCounter keine Fehlerbedingung meldet, wenn ein Zähler instance angegeben wird, der nicht vorhanden ist. Stattdessen wird ERROR_SUCCESS zurückgegeben. Der Grund für dieses Verhalten ist, dass nicht bekannt ist, ob ein nicht vorhandener Zähler instance angegeben wurde oder ob ein Zähler vorhanden ist, der aber noch nicht erstellt wurde.
Der fehlende Zähler instance wird entweder von PdhCollectQueryData, PdhGetRawCounterValue oder PdhGetFormattedCounterValue gemeldet. Beim Aufrufen von PdhCollectQueryData für einen Zähler instance und der Zähler instance immer noch nicht vorhanden ist, wird davon ausgegangen, dass der Zähler instance nicht vorhanden ist und die Funktion PDH_NO_DATA zurückgibt. Wenn jedoch mehr als ein Zähler abgefragt wird, gibt PdhCollectQueryData möglicherweise weiterhin ERROR_SUCCESS zurück, auch wenn eine der Indikatoreninstanzen noch nicht vorhanden ist. Rufen Sie in diesem Fall PdhGetRawCounterValue oder PdhGetFormattedCounterValue für jede der Zählerinstanzen von Interesse auf. Wenn die instance beim Aufrufen von PdhGetRawCounterValue nicht vorhanden ist, gibt die Funktion ERROR_SUCCESS zurück und legt den CStatus-Member von PDH_RAW_COUNTER auf PDH_STATUS_NO_INSTANCE fest. Wenn die instance beim Aufrufen von PdhGetFormattedCounterValue nicht vorhanden ist, gibt die Funktion PDH_INVALID_DATA zurück und legt das CStatus-Element des PDH_FMT_COUNTERVALUE auf PDH_CSTATUS_NO_INSTANCE fest.
Beachten Sie, dass der in der PdhAddCounter-Funktion angegebene Indikatorpfad lokalisiert werden muss. Die PdhAddEnglishCounter-Funktion bietet eine gebietsschemaneutrale Möglichkeit zum Hinzufügen von Leistungsindikatoren zur Abfrage. Diese Funktion ist die empfohlene Möglichkeit, gebietsschemaneutrale Indikatoren zu einer Abfrage hinzuzufügen.
Um einen Zähler aus einer Abfrage zu entfernen, rufen Sie die PdhRemoveCounter-Funktion auf.
Nachdem Sie das Sammeln von Daten für eine Abfrage abgeschlossen haben, rufen Sie die PdhCloseQuery-Funktion auf, um die Abfrage zu schließen und alle zugeordneten Systemressourcen freizugeben. PdhCloseQuery schließt alle der Abfrage zugeordneten Leistungsindikatorhandles.