Codes d’erreur de l’application d’assistance pour les données de performances

Toutes les fonctions d’assistance des données de performances (PDH) retournent une valeur de type PDH_STATUS. Si la fonction réussit, la valeur de retour est ERROR_SUCCESS. Sinon, la fonction retourne un code d’erreur système ou un code d’erreur PDH. Pour récupérer le texte de description de l’erreur dans votre application, utilisez la fonction FormatMessage , comme indiqué dans l’exemple suivant.

#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);
}

Pour les fonctions de collecte et de mise en forme de données, il est important de se rappeler que la valeur de retour de la fonction indique la réussite ou l’erreur de l’appel de fonction et pas nécessairement celle des données de compteur. Toujours case activée le membre CStatus de la valeur de compteur retournée pour vous assurer que les données retournées sont valides avant de les utiliser. Si la valeur du membre CStatus n’indique pas la réussite, n’utilisez pas les données.

Le tableau suivant fournit une liste de codes d’erreur spécifiques à PDH. Ces valeurs sont définies dans le fichier d’en-tête pdhmsg.h .

Code d'erreur Description
0x00000000 (PDH_CSTATUS_VALID_DATA) Les données retournées sont valides.
0x00000001 (PDH_CSTATUS_NEW_DATA) La valeur des données de retour est valide et différente de celle du dernier exemple.
0x800007D0 (PDH_CSTATUS_NO_MACHINE) Impossible de se connecter à l’ordinateur spécifié ou l’ordinateur est hors connexion.
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) Le instance spécifié n’est pas présent.
0x800007D2 (PDH_MORE_DATA) Il y a plus de données à retourner que ne le feraient dans la mémoire tampon fournie. Allouez une mémoire tampon plus grande et appelez à nouveau la fonction.
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) L’élément de données a été ajouté à la requête, mais n’a pas été validé ni consulté. Aucune autre information status sur cet élément de données n’est disponible.
0x800007D4 (PDH_RETRY) L’opération sélectionnée doit être retentée.
0x800007D5 (PDH_NO_DATA) Aucune donnée à retourner.
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) Un compteur avec une valeur de dénominateur négative a été détecté.
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) Un compteur avec une valeur de base de temps négative a été détecté.
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) Un compteur avec une valeur négative a été détecté.
0x800007D9 (PDH_DIALOG_CANCELLED) L’utilisateur a annulé la boîte de dialogue.
0x800007DA (PDH_END_OF_LOG_FILE) La fin du fichier journal a été atteinte.
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) Un délai d’attente s’est produit pendant l’attente de la fin du thread de collecte de compteurs asynchrone.
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) Impossible de modifier la source de données en temps réel par défaut. Il existe des sessions de requête en temps réel qui collectent des données de compteur.
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) L’objet spécifié est introuvable sur le système.
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) Le compteur spécifié est introuvable.
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) Les données retournées ne sont pas valides.
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE) Une fonction PDH n’a pas pu allouer suffisamment de mémoire temporaire pour terminer l’opération. Fermez certaines applications ou étendez le fichier de page et réessayez la fonction.
0xC0000BBC (PDH_INVALID_HANDLE) Le handle n’est pas un objet PDH valide.
0xC0000BBD (PDH_INVALID_ARGUMENT) Un argument requis est manquant ou non valide.
0xC0000BBE (PDH_FUNCTION_NOT_FOUND) Impossible de trouver la fonction spécifiée.
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) Aucun compteur n’a été spécifié.
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) Impossible d’analyser le chemin du compteur. Vérifiez le format et la syntaxe du chemin d’accès spécifié.
0xC0000BC1 (PDH_INVALID_BUFFER) La mémoire tampon passée par l’appelant n’est pas valide.
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) Les données demandées sont supérieures à la mémoire tampon fournie. Impossible de retourner les données demandées.
0xC0000BC3 (PDH_CANNOT_CONNECT_MACHINE) Impossible de se connecter à l’ordinateur demandé.
0xC0000BC4 (PDH_INVALID_PATH) Impossible d’interpréter le chemin du compteur spécifié.
0xC0000BC5 (PDH_INVALID_INSTANCE) Le nom instance n’a pas pu être lu à partir du chemin du compteur spécifié.
0xC0000BC6 (PDH_INVALID_DATA) Les données ne sont pas correctes.
0xC0000BC7 (PDH_NO_DIALOG_DATA) Le bloc de données de la boîte de dialogue était manquant ou non valide.
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) Impossible de lire le compteur et/ou le texte d’aide à partir de l’ordinateur spécifié.
0xC0000BC9 (PDH_LOG_FILE_CREATE_ERROR) Impossible de créer le fichier journal spécifié.
0xC0000BCA (PDH_LOG_FILE_OPEN_ERROR) Impossible d’ouvrir le fichier journal spécifié.
0xC0000BCB (PDH_LOG_TYPE_NOT_FOUND) Le type de fichier journal spécifié n’a pas été installé sur ce système.
0xC0000BCC (PDH_NO_MORE_DATA) Aucune donnée n'est disponible.
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) L’enregistrement spécifié est introuvable dans le fichier journal.
0xC0000BCE (PDH_DATA_SOURCE_IS_LOG_FILE) La source de données spécifiée est un fichier journal.
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) La source de données spécifiée est l’activité actuelle.
0xC0000BD0 (PDH_UNABLE_READ_LOG_HEADER) Impossible de lire l’en-tête du fichier journal.
0xC0000BD1 (PDH_FILE_NOT_FOUND) Impossible de trouver le fichier spécifié.
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) Il existe déjà un fichier avec le nom de fichier spécifié.
0xC0000BD3 (PDH_NOT_IMPLEMENTED) La fonction référencée n’a pas été implémentée.
0xC0000BD4 (PDH_STRING_NOT_FOUND) Impossible de trouver la chaîne spécifiée dans la liste des chaînes de nom de performance et de texte d’aide.
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) Impossible de mapper aux fichiers de données de nom du compteur de performances. Les données seront lues à partir du Registre et stockées localement.
0xC0000BD6 (PDH_UNKNOWN_LOG_FORMAT) Le format du fichier journal spécifié n’est pas reconnu par la DLL PDH.
0xC0000BD7 (PDH_UNKNOWN_LOGSVC_COMMAND) La valeur de la commande Log Service spécifiée n’est pas reconnue.
0xC0000BD8 (PDH_LOGSVC_QUERY_NOT_FOUND) La requête spécifiée à partir du service de journal est introuvable ou n’a pas pu être ouverte.
0xC0000BD9 (PDH_LOGSVC_NOT_OPENED) Impossible d’ouvrir la clé Service de journal des données de performances. Cela peut être dû à un privilège insuffisant ou au fait que le service n’a pas été installé.
0xC0000BDA (PDH_WBEM_ERROR) Une erreur s’est produite lors de l’accès au magasin de données WBEM.
0xC0000BDB (PDH_ACCESS_DENIED) Impossible d’accéder à l’ordinateur ou au service souhaité. Vérifiez les autorisations et l’authentification du service de journal ou de la session utilisateur interactive par rapport à celles sur l’ordinateur ou le service surveillé.
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL) La taille maximale du fichier journal spécifiée est trop petite pour enregistrer les compteurs sélectionnés. Aucune donnée n’est enregistrée dans ce fichier journal. Spécifiez un ensemble de compteurs plus petit à journaliser ou une taille de fichier plus grande, puis réessayez cet appel.
0xC0000BDD (PDH_INVALID_DATASOURCE) Impossible de se connecter au nom de source de données ODBC.
0xC0000BDE (PDH_INVALID_SQLDB) SQL Database ne contient pas d’ensemble de tables valides pour Perfmon.
0xC0000BDF (PDH_NO_COUNTERS) Aucun compteur n’a été trouvé pour ce jeu de journaux SQL Perfmon.
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) Échec de l’appel à SQLAllocStmt avec %1.
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) Échec de l’appel à SQLAllocConnect avec %1.
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) Échec de l’appel à SQLExecDirect avec %1.
0xC0000BE3 (PDH_SQL_FETCH_FAILED) Échec de l’appel à SQLFetch avec %1.
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) Échec de l’appel à SQLRowCount avec %1.
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) Échec de l’appel à SQLMoreResults avec %1.
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) Échec de l’appel à SQLConnect avec %1.
0xC0000BE7 (PDH_SQL_BIND_FAILED) Échec de l’appel à SQLBindCol avec %1.
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) Impossible de se connecter au serveur WMI sur l’ordinateur demandé.
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) La collection « %1!s! » est déjà en cours d’exécution.
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) L’heure de début spécifiée est après l’heure de fin.
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) La collection « %1!s! » n’existe pas.
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) L’heure de fin spécifiée est déjà écoulée.
0xC0000BED (PDH_PLA_ERROR_NOSTART) La collection « %1!s! » n’a pas démarré ; case activée le journal des événements de l’application pour toute erreur.
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS) La collection « %1!s! » existe déjà.
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) Il existe une incompatibilité dans le type de paramètres.
0xC0000BF0 (PDH_PLA_ERROR_FILEPATH) Les informations spécifiées ne sont pas résolues en nom de chemin d’accès valide.
0xC0000BF1 (PDH_PLA_SERVICE_ERROR) Le service « Alertes des journaux & de performances » n’a pas répondu.
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) Les informations transmises ne sont pas valides.
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) Les informations transmises ne sont pas valides.
0xC0000BF4 (PDH_PLA_ERROR_NAME_TOO_LONG) Le nom fourni est trop long.
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) Le format du journal SQL est incorrect. Le format correct est SQL:<DSN-name>!<LogSet-Name>.
0xC0000BF6 (PDH_COUNTER_ALREADY_IN_QUERY) Le compteur de performances dans l’appel PdhAddCounter a déjà été ajouté dans la requête de performances. Ce compteur est ignoré.
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) Impossible de lire les informations et les données du compteur à partir des fichiers journaux binaires d’entrée.
0xC0000BF8 (PDH_LOG_SAMPLE_TOO_SMALL) Au moins un des fichiers journaux binaires d’entrée contient moins de deux exemples de données.
0xC0000BF9 (PDH_OS_LATER_VERSION) La version du système d’exploitation sur l’ordinateur nommé %1 est ultérieure à celle de l’ordinateur local. Cette opération n’est pas disponible à partir de l’ordinateur local.
0xC0000BFA (PDH_OS_EARLIER_VERSION) %1 prend en charge %2 ou version ultérieure. Vérifiez la version du système d’exploitation sur l’ordinateur nommé %3.
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) Le fichier de sortie doit contenir des données antérieures au fichier à ajouter.
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) Les deux fichiers doivent avoir des compteurs identiques pour pouvoir être ajoutés.
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) Impossible de modifier la disposition de table CounterDetail dans la base de données SQL.
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) Le système est occupé. Un délai d’attente s’est produit lors de la collecte des données de compteur. Réessayez ultérieurement ou augmentez la valeur de Registre CollectTime .