Codici di errore dell'helper per i dati sulle prestazioni
Tutte le funzioni PDH (Performance Data Helper) restituiscono un valore di tipo PDH_STATUS. Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS
. In caso contrario, la funzione restituisce un codice di errore di sistema o un codice di errore PDH. Per recuperare il testo di descrizione dell'errore nella tua applicazione, utilizzare la funzione FormatMessage come illustrato nell'esempio seguente.
#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);
}
Per le funzioni di raccolta dati e formattazione, è importante ricordare che il valore restituito della funzione indica l'esito positivo o negativo della chiamata di funzione e non necessariamente quello dei dati del contatore. Verifica sempre il membro CStatus del valore del contatore restituito per assicurarti che i dati restituiti siano validi prima di usarli. Se il valore del membro CStatus non indica successo, non usare i dati.
Nella tabella seguente viene fornito un elenco di codici di errore specifici per PDH. Questi valori vengono definiti nel file header pdhmsg.h
.
Codice di errore | Descrizione |
---|---|
0x00000000 (PDH_CSTATUS_VALID_DATA) | I dati restituiti sono validi. |
0x00000001 (PDH_CSTATUS_NEW_DATA) | Il valore restituito dei dati è valido e diverso dall'ultimo esempio. |
0x800007D0 (PDH_CSTATUS_NO_MACHINE - Nessuna macchina disponibile) | Impossibile connettersi al computer specificato oppure il computer è offline. |
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) | L'istanza specificata non è presente. |
0x800007D2 (PDH_MORE_DATA) | I dati da restituire sono più di quanti ne possa contenere il buffer fornito. Allocare un buffer più grande e chiamare di nuovo la funzione. |
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) | L'elemento di dati è stato aggiunto alla query, ma non è stato convalidato né consultato. Non sono disponibili altre informazioni sullo stato per questo elemento di dati. |
0x800007D4 (PDH_RETRY) | L'operazione selezionata deve essere ritentata. |
0x800007D5 (PDH_NO_DATA) | Nessun dato da restituire. |
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) | È stato rilevato un contatore con un valore denominatore negativo. |
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) | È stato rilevato un contatore con un valore di base temporale negativo. |
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) | È stato rilevato un contatore con un valore negativo. |
0x800007D9 (PDH_DIALOG_CANCELLED) | L'utente ha annullato la finestra di dialogo. |
0x800007DA (PDH_END_OF_LOG_FILE) | È stata raggiunta la fine del file di log. |
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) | Si è verificato un timeout mentre si attendeva la conclusione del thread asincrono di raccolta dei contatori. |
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) | Impossibile modificare il set originario di dati in tempo reale predefinito. Sono disponibili sessioni di query in tempo reale che raccolgono i dati dei contatori. |
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) | L'oggetto specificato non viene trovato nel sistema. |
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) | Impossibile trovare il contatore specificato. |
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) | I dati restituiti non sono validi. |
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE) | Una funzione PDH non è in grado di allocare memoria temporanea sufficiente per completare l'operazione. Chiudere alcune applicazioni o estendere il file di pagina e ripetere la funzione. |
0xC0000BBC (PDH_INVALID_HANDLE) | L'handle non è un oggetto PDH valido. |
0xC0000BBD (PDH_ARGUMENTO_NON_VALIDO) | Un argomento obbligatorio non è corretto o mancante. |
0xC0000BBE (Funzione PDH non trovata) | Impossibile trovare la funzione specificata. |
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) | Non è stato specificato alcun contatore. |
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) | Impossibile analizzare il percorso del contatore. Controllare il formato e la sintassi del percorso specificato. |
0xC0000BC1 (PDH_INVALID_BUFFER) | Il buffer passato dal chiamante non è valido. |
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) | I dati richiesti sono maggiori del buffer fornito. Impossibile restituire i dati richiesti. |
0xC0000BC3 (PDH_CANNOT_CONNECT_MACHINE) | Impossibile connettersi al computer richiesto. |
0xC0000BC4 (PDH_INVALID_PATH) | Impossibile interpretare il percorso del contatore specificato. |
0xC0000BC5 (PDH_INVALID_INSTANCE) | Impossibile leggere il nome dell'istanza dal percorso specificato del contatore. |
0xC0000BC6 (PDH_INVALID_DATA) | I dati non sono validi. |
0xC0000BC7 (PDH_NO_DIALOG_DATA) | Blocco di dati della finestra di dialogo mancante o non valido. |
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) | Impossibile leggere il contatore e/o il testo di aiuto dal computer specificato. |
0xC0000BC9 (PDH_LOG_FILE_CREATE_ERROR) | Impossibile creare il file di log specificato. |
0xC0000BCA (Errore di Apertura File di Registro PDH) | Impossibile aprire il file di log specificato. |
0xC0000BCB (PDH_LOG_TYPE_NON_TROVATO) | Il tipo di file di log specificato non è stato installato in questo sistema. |
0xC0000BCC (PDH_NO_MORE_DATA) | Non sono disponibili altri dati. |
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) | Il record specificato non è stato trovato nel file di log. |
0xC0000BCE (PDH_SORGENTE_DATI_È_FILE_DI_LOG) | L'origine dati specificata è un file di log. |
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) | L'origine dati specificata è l'attività corrente. |
0xC0000BD0 (PDH_UNABLE_READ_LOG_HEADER) | Impossibile leggere l'intestazione del file di log. |
0xC0000BD1 (PDH_FILE_NOT_FOUND) | Impossibile trovare il file specificato. |
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) | Esiste già un file con il nome file specificato. |
0xC0000BD3 (PDH_NOT_IMPLEMENTED) | La funzione a cui si fa riferimento non è stata implementata. |
0xC0000BD4 (PDH_STRING_NOT_FOUND) | Impossibile trovare la stringa specificata nell'elenco del nome delle prestazioni e delle stringhe di testo della Guida. |
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) | Impossibile eseguire il mapping ai file di dati del nome del contatore delle prestazioni. I dati verranno letti dal Registro di sistema e archiviati in locale. |
0xC0000BD6 (PDH_UNKNOWN_LOG_FORMAT) | Il formato del file di log specificato non è riconosciuto dalla DLL PDH. |
0xC0000BD7 (PDH_UNKNOWN_LOGSVC_COMMAND) | Il valore del comando log service specificato non viene riconosciuto. |
0xC0000BD8 (PDH_LOGSVC_QUERY_NOT_FOUND) | Impossibile trovare o aprire la query specificata dal servizio di log. |
0xC0000BD9 (PDH_LOGSVC_NOT_OPENED) | Impossibile aprire la chiave del servizio di registrazione dei dati sulle prestazioni. Ciò può essere dovuto a privilegi insufficienti o perché il servizio non è stato installato. |
0xC0000BDA (PDH_WBEM_ERROR) | Errore durante l'accesso all'archivio dati WBEM. |
0xC0000BDB (PDH_ACCESS_DENIED) | Impossibile accedere al computer o al servizio desiderato. Controllare le autorizzazioni e l'autenticazione del servizio di registro o della sessione utente interattiva rispetto a quelle del computer o del servizio monitorato. |
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL - File di log PDH troppo piccolo) | La dimensione massima del file di log specificata è troppo piccola per registrare i contatori selezionati. Nessun dato verrà registrato in questo file di log. Specificare un set più piccolo di contatori per registrare o una dimensione di file maggiore e riprovare a eseguire questa chiamata. |
0xC0000BDD (PDH_INVALID_DATASOURCE) | Impossibile connettersi al nome dell'origine dati ODBC. |
0xC0000BDE (PDH_INVALID_SQLDB) | Il database SQL non contiene un set valido di tabelle per Perfmon. |
0xC0000BDF (PDH_NO_COUNTERS) | Non sono stati trovati contatori per questo set di log SQL perfmon. |
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) | Chiamata a SQLAllocStmt non riuscita con %1. |
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) | Chiamata a SQLAllocConnect non riuscita con %1. |
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) | Chiamata a SQLExecDirect non riuscita con %1. |
0xC0000BE3 (PDH_SQL_FETCH_FAILED) | Chiamata a SQLFetch non riuscita con %1. |
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) | Chiamata a SQLRowCount non riuscita con %1. |
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) | Chiamata a SQLMoreResults non riuscita con %1. |
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) | Chiamata a SQLConnect non riuscita con %1. |
0xC0000BE7 (PDH_SQL_BIND_FAILED - Errore nel vincolo SQL) | Chiamata a SQLBindCol non riuscita con %1. |
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) | Impossibile connettersi al server WMI nel computer richiesto. |
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) | Raccolta "%1!s!" è già in esecuzione. |
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) | L'ora di inizio specificata è dopo l'ora di fine. |
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) | La raccolta "%1!s!" non esiste. |
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) | L'ora di fine specificata è già trascorsa. |
0xC0000BED (PDH_PLA_ERROR_NOSTART) | La raccolta "%1!s!" non è stata avviata; controllare la presenza di eventuali errori nel registro eventi dell'applicazione. |
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS) | Raccolta "%1!s!" esiste già. |
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) | Esiste una mancata corrispondenza nel tipo di impostazioni. |
0xC0000BF0 (PDH_PLA_ERROR_FILEPATH) | Le informazioni specificate non si risolvono in un nome di percorso valido. |
0xC0000BF1 (PDH_PLA_SERVICE_ERROR) | Il servizio "Log delle prestazioni e avvisi &" non ha risposto. |
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) | Le informazioni passate non sono valide. |
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) | Le informazioni passate non sono valide. |
0xC0000BF4 (PDH_PLA_ERRORE_NOME_TROPPO_LUNGO) | Il nome specificato è troppo lungo. |
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) | Il formato del log SQL non è corretto. Il formato corretto è SQL:<DSN-name>!<LogSet-Name> . |
0xC0000BF6 (PDH_COUNTER_ALREADY_IN_QUERY) | Il contatore di prestazioni in nella chiamata PdhAddCounter è già stato aggiunto nella query delle prestazioni. Questo contatore viene ignorato. |
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) | Impossibile leggere le informazioni sui contatori e i dati dai file di log binari di input. |
0xC0000BF8 (PDH_LOG_SAMPLE_TOO_SMALL) | Almeno uno dei file di log binari di input contiene meno di due esempi di dati. |
0xC0000BF9 (PDH_OS_LATER_VERSION) | La versione del sistema operativo nel computer denominato %1 è successiva a quella nel computer locale. Questa operazione non è disponibile nel computer locale. |
0xC0000BFA (PDH_OS_EARLIER_VERSION - Versione precedente del sistema operativo) | %1 supporta %2 o versioni successive. Controllare la versione del sistema operativo sul computer denominato %3. |
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) | Il file di output deve contenere dati precedenti al file da aggiungere. |
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) | Entrambi i file devono avere contatori identici per poter essere concatenati. |
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) | Impossibile modificare il layout della tabella CounterDetail nel database SQL. |
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) | Il sistema è occupato. Si è verificato un timeout durante la raccolta dei dati dei contatori. Riprovare in un secondo momento o aumentare il valore CollectTime del Registro di sistema. |