Fehlercodes des Leistungsdaten-Hilfsprogramms

Alle PDH-Funktionen (Performance Data Helper) geben einen Wert vom Typ PDH_STATUS zurück. Wenn die Funktion erfolgreich ist, ist ERROR_SUCCESSder Rückgabewert . Andernfalls gibt die Funktion einen Systemfehlercode oder einen PDH-Fehlercode zurück. Verwenden Sie die FormatMessage-Funktion , wie im folgenden Beispiel gezeigt, um den Beschreibungstext für den Fehler in Ihrer Anwendung abzurufen.

#include <windows.h>
#include <stdio.h>
#include <pdhmsg.h>

void main(void)
{
    HANDLE hPdhLibrary = NULL;
    LPWSTR pMessage = NULL;
    DWORD dwErrorCode = PDH_PLA_ERROR_ALREADY_EXISTS;

    hPdhLibrary = LoadLibrary(L"pdh.dll");
    if (NULL == hPdhLibrary)
    {
        wprintf(L"LoadLibrary failed with %lu\n", GetLastError());
        return;
    }

    if (!FormatMessage(FORMAT_MESSAGE_FROM_HMODULE |
                       FORMAT_MESSAGE_ALLOCATE_BUFFER |
                       FORMAT_MESSAGE_IGNORE_INSERTS,
                       hPdhLibrary,
                       dwErrorCode,
                       0,
                       (LPWSTR)&pMessage,
                       0,
                       NULL))
    {
        wprintf(L"Format message failed with 0x%x\n", GetLastError());
        return;
    }

    wprintf(L"Formatted message: %ls\n", pMessage);
    LocalFree(pMessage);
}

Für Datensammlungs- und Formatierungsfunktionen ist es wichtig, sich daran zu erinnern, dass der Rückgabewert der Funktion den Erfolg oder Fehler des Funktionsaufrufs angibt und nicht unbedingt den der Zählerdaten. Überprüfen Sie immer den CStatus-Member des zurückgegebenen Zählerwerts, um sicherzustellen, dass die zurückgegebenen Daten gültig sind, bevor Sie ihn verwenden. Wenn der Wert des CStatus-Members keinen Erfolg anzeigt, verwenden Sie die Daten nicht.

Die folgende Tabelle enthält eine Liste der Fehlercodes, die für PDH spezifisch sind. Diese Werte werden in der pdhmsg.h Headerdatei definiert.

Fehlercode BESCHREIBUNG
0x00000000 (PDH_CSTATUS_VALID_DATA) Die zurückgegebenen Daten sind gültig.
0x00000001 (PDH_CSTATUS_NEW_DATA) Der Rückgabedatenwert ist gültig und unterscheidet sich vom letzten Beispiel.
0x800007D0 (PDH_CSTATUS_NO_MACHINE) Es kann keine Verbindung mit dem angegebenen Computer hergestellt werden, oder der Computer ist offline.
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) Der angegebene instance ist nicht vorhanden.
0x800007D2 (PDH_MORE_DATA) Es müssen mehr Daten zurückgegeben werden, als in den bereitgestellten Puffer passen würden. Weisen Sie einen größeren Puffer zu, und rufen Sie die Funktion erneut auf.
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) Das Datenelement wurde der Abfrage hinzugefügt, aber weder überprüft noch wurde darauf zugegriffen. Weitere status Informationen zu diesem Datenelement sind nicht verfügbar.
0x800007D4 (PDH_RETRY) Der ausgewählte Vorgang sollte wiederholt werden.
0x800007D5 (PDH_NO_DATA) Es werden keine Daten zurückgegeben.
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) Es wurde ein Zähler mit einem negativen Nennerwert erkannt.
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) Ein Zähler mit einem negativen Zeitbasiswert wurde erkannt.
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) Ein Zähler mit einem negativen Wert wurde erkannt.
0x800007D9 (PDH_DIALOG_CANCELLED) Der Benutzer hat das Dialogfeld abgebrochen.
0x800007DA (PDH_END_OF_LOG_FILE) Das Ende der Protokolldatei wurde erreicht.
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) Beim Warten auf das Ende des Threads für die asynchrone Indikatorensammlung ist ein Timeout aufgetreten.
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) Die Standarddatenquelle in Echtzeit kann nicht geändert werden. Es gibt Echtzeitabfragesitzungen, die Zählerdaten sammeln.
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) Das angegebene Objekt wird im System nicht gefunden.
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) Der angegebene Zähler konnte nicht gefunden werden.
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) Die zurückgegebenen Daten sind ungültig.
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE) Eine PDH-Funktion konnte nicht genügend temporären Arbeitsspeicher zuweisen, um den Vorgang abzuschließen. Schließen Sie einige Anwendungen, oder erweitern Sie die Auslagerungsdatei, und wiederholen Sie die Funktion.
0xC0000BBC (PDH_INVALID_HANDLE) Das Handle ist kein gültiges PDH-Objekt.
0xC0000BBD (PDH_INVALID_ARGUMENT) Ein erforderliches Argument fehlt oder ist falsch.
0xC0000BBE (PDH_FUNCTION_NOT_FOUND) Die angegebene Funktion konnte nicht gefunden werden.
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) Es wurde kein Leistungsindikator angegeben.
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) Der Zählerpfad kann nicht analysiert werden. Überprüfen Sie das Format und die Syntax des angegebenen Pfads.
0xC0000BC1 (PDH_INVALID_BUFFER) Der vom Aufrufer übergebene Puffer ist ungültig.
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) Die angeforderten Daten sind größer als der bereitgestellte Puffer. Die angeforderten Daten können nicht zurückgegeben werden.
0xC0000BC3 (PDH_CANNOT_CONNECT_MACHINE) Es kann keine Verbindung mit dem angeforderten Computer hergestellt werden.
0xC0000BC4 (PDH_INVALID_PATH) Der angegebene Zählerpfad konnte nicht interpretiert werden.
0xC0000BC5 (PDH_INVALID_INSTANCE) Der instance Name konnte nicht aus dem angegebenen Indikatorpfad gelesen werden.
0xC0000BC6 (PDH_INVALID_DATA) Die Daten sind ungültig.
0xC0000BC7 (PDH_NO_DIALOG_DATA) Der Dialogfelddatenblock fehlte oder war ungültig.
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) Der Leistungsindikator und/oder der Hilfetext vom angegebenen Computer kann nicht gelesen werden.
0xC0000BC9 (PDH_LOG_FILE_CREATE_ERROR) Die angegebene Protokolldatei kann nicht erstellt werden.
0xC0000BCA (PDH_LOG_FILE_OPEN_ERROR) Die angegebene Protokolldatei kann nicht geöffnet werden.
0xC0000BCB (PDH_LOG_TYPE_NOT_FOUND) Der angegebene Protokolldateityp wurde auf diesem System nicht installiert.
0xC0000BCC (PDH_NO_MORE_DATA) Es sind keine weiteren Daten verfügbar.
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) Der angegebene Datensatz wurde in der Protokolldatei nicht gefunden.
0xC0000BCE (PDH_DATA_SOURCE_IS_LOG_FILE) Die angegebene Datenquelle ist eine Protokolldatei.
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) Die angegebene Datenquelle ist die aktuelle Aktivität.
0xC0000BD0 (PDH_UNABLE_READ_LOG_HEADER) Der Protokolldateiheader konnte nicht gelesen werden.
0xC0000BD1 (PDH_FILE_NOT_FOUND) Die angegebene Datei konnte nicht gefunden werden.
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) Es ist bereits eine Datei mit dem angegebenen Dateinamen vorhanden.
0xC0000BD3 (PDH_NOT_IMPLEMENTED) Die Funktion, auf die verwiesen wird, wurde nicht implementiert.
0xC0000BD4 (PDH_STRING_NOT_FOUND) Die angegebene Zeichenfolge in der Liste der Leistungsnamen- und Hilfetextzeichenfolgen kann nicht gefunden werden.
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) Die Zuordnung zu den Datendateien des Leistungsindikatornamens kann nicht möglich sein. Die Daten werden aus der Registrierung gelesen und lokal gespeichert.
0xC0000BD6 (PDH_UNKNOWN_LOG_FORMAT) Das Format der angegebenen Protokolldatei wird von der PDH-DLL nicht erkannt.
0xC0000BD7 (PDH_UNKNOWN_LOGSVC_COMMAND) Der angegebene Log Service-Befehlswert wird nicht erkannt.
0xC0000BD8 (PDH_LOGSVC_QUERY_NOT_FOUND) Die angegebene Abfrage aus dem Protokolldienst konnte nicht gefunden oder nicht geöffnet werden.
0xC0000BD9 (PDH_LOGSVC_NOT_OPENED) Der Dienstschlüssel des Leistungsdatenprotokolldiensts konnte nicht geöffnet werden. Dies kann auf unzureichende Berechtigungen oder darauf zurückzuführen sein, dass der Dienst nicht installiert wurde.
0xC0000BDA (PDH_WBEM_ERROR) Beim Zugriff auf den WBEM-Datenspeicher ist ein Fehler aufgetreten.
0xC0000BDB (PDH_ACCESS_DENIED) Auf den gewünschten Computer oder Dienst kann nicht zugegriffen werden. Überprüfen Sie die Berechtigungen und die Authentifizierung des Protokolldiensts oder der interaktiven Benutzersitzung mit den Berechtigungen auf dem computer oder dienst, der überwacht wird.
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL) Die angegebene maximale Protokolldateigröße ist zu klein, um die ausgewählten Leistungsindikatoren zu protokollieren. In dieser Protokolldatei werden keine Daten aufgezeichnet. Geben Sie einen kleineren Satz von Indikatoren für die Protokollierung oder eine größere Dateigröße an, und wiederholen Sie diesen Aufruf.
0xC0000BDD (PDH_INVALID_DATASOURCE) Es kann keine Verbindung mit ODBC DataSource Name hergestellt werden.
0xC0000BDE (PDH_INVALID_SQLDB) SQL-Datenbank enthält keinen gültigen Satz von Tabellen für Perfmon.
0xC0000BDF (PDH_NO_COUNTERS) Für diesen Perfmon SQL-Protokollsatz wurden keine Leistungsindikatoren gefunden.
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) Fehler beim Aufruf von SQLAllocStmt mit %1.
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) Fehler beim Aufruf von SQLAllocConnect mit %1.
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) Fehler beim Aufruf von SQLExecDirect mit %1.
0xC0000BE3 (PDH_SQL_FETCH_FAILED) Fehler beim Aufruf von SQLFetch mit %1.
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) Fehler beim Aufruf von SQLRowCount mit %1.
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) Fehler beim Aufruf von SQLMoreResults mit %1.
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) Fehler beim Aufruf von SQLConnect mit %1.
0xC0000BE7 (PDH_SQL_BIND_FAILED) Fehler beim Aufruf von SQLBindCol mit %1.
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) Auf dem angeforderten Computer kann keine Verbindung mit dem WMI-Server hergestellt werden.
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) Die Sammlung "%1!s!" wird bereits ausgeführt.
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) Die angegebene Startzeit liegt nach der Endzeit.
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) Die Sammlung "%1!s!" ist nicht vorhanden.
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) Die angegebene Endzeit ist bereits verstrichen.
0xC0000BED (PDH_PLA_ERROR_NOSTART) Die Sammlung "%1!s!" wurde nicht gestartet; Überprüfen Sie das Anwendungsereignisprotokoll auf Fehler.
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS) Die Sammlung "%1!s!" ist bereits vorhanden.
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) Der Einstellungstyp stimmt nicht überein.
0xC0000BF0 (PDH_PLA_ERROR_FILEPATH) Die angegebenen Informationen werden nicht in einen gültigen Pfadnamen aufgelöst.
0xC0000BF1 (PDH_PLA_SERVICE_ERROR) Der Dienst "Leistungsprotokollwarnungen & " hat nicht reagiert.
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) Die übergebenen Informationen sind ungültig.
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) Die übergebenen Informationen sind ungültig.
0xC0000BF4 (PDH_PLA_ERROR_NAME_TOO_LONG) Der angegebene Name ist zu lang.
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) Das SQL-Protokollformat ist falsch. Das richtige Format ist SQL:<DSN-name>!<LogSet-Name>.
0xC0000BF6 (PDH_COUNTER_ALREADY_IN_QUERY) Der Leistungsindikator im PdhAddCounter-Aufruf wurde bereits in der Leistungsabfrage hinzugefügt. Dieser Indikator wird ignoriert.
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) Zählerinformationen und Daten aus Eingabebinärprotokolldateien können nicht gelesen werden.
0xC0000BF8 (PDH_LOG_SAMPLE_TOO_SMALL) Mindestens eine der Eingabebinärprotokolldateien enthält weniger als zwei Datenbeispiele.
0xC0000BF9 (PDH_OS_LATER_VERSION) Die Version des Betriebssystems auf dem Computer mit dem Namen %1 ist höher als auf dem lokalen Computer. Dieser Vorgang ist auf dem lokalen Computer nicht verfügbar.
0xC0000BFA (PDH_OS_EARLIER_VERSION) %1 unterstützt %2 oder höher. Überprüfen Sie die Betriebssystemversion auf dem Computer mit dem Namen %3.
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) Die Ausgabedatei muss frühere Daten als die datei enthalten, die angefügt werden soll.
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) Beide Dateien müssen identische Indikatoren aufweisen, um sie anzufügen.
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) Das Layout der CounterDetail-Tabelle in SQL-Datenbank kann nicht geändert werden.
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) Das System ist ausgelastet. Beim Sammeln von Zählerdaten ist ein Timeout aufgetreten. Wiederholen Sie es später, oder erhöhen Sie den CollectTime-Registrierungswert .