Códigos de erro de auxiliar de dados de desempenho

Todas as funções PDH (Auxiliar de Dados de Desempenho) retornam um valor do tipo PDH_STATUS. Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS. Caso contrário, a função retornará um código de erro do sistema ou um código de erro PDH. Para recuperar o texto de descrição do erro em seu aplicativo, use a função FormatMessage , conforme mostrado no exemplo a seguir.

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

Para funções de coleta e formatação de dados, é importante lembrar que o valor retornado da função indica o êxito ou o erro da chamada de função e não necessariamente o dos dados do contador. Sempre marcar o membro CStatus do valor do contador retornado para garantir que os dados retornados sejam válidos antes de usá-los. Se o valor do membro CStatus não indicar êxito, não use os dados.

A tabela a seguir fornece uma lista de códigos de erro específicos do PDH. Esses valores são definidos no arquivo de pdhmsg.h cabeçalho.

Código do erro Descrição
0x00000000 (PDH_CSTATUS_VALID_DATA) Os dados retornados são válidos.
0x00000001 (PDH_CSTATUS_NEW_DATA) O valor de dados retornados é válido e diferente do último exemplo.
0x800007D0 (PDH_CSTATUS_NO_MACHINE) Não é possível se conectar ao computador especificado ou o computador está offline.
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) A instância especificada não está presente.
0x800007D2 (PDH_MORE_DATA) Há mais dados a serem retornados do que caberia no buffer fornecido. Aloque um buffer maior e chame a função novamente.
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) O item de dados foi adicionado à consulta, mas não foi validado nem acessado. Nenhuma outra status informações sobre esse item de dados está disponível.
0x800007D4 (PDH_RETRY) A operação selecionada deve ser repetida.
0x800007D5 (PDH_NO_DATA) Nenhum dado a ser retornado.
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) Um contador com um valor de denominador negativo foi detectado.
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) Um contador com um valor base de tempo negativo foi detectado.
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) Um contador com um valor negativo foi detectado.
0x800007D9 (PDH_DIALOG_CANCELLED) O usuário cancelou a caixa de diálogo.
0x800007DA (PDH_END_OF_LOG_FILE) O final do arquivo de log foi atingido.
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) Ocorreu um tempo limite enquanto aguardava o fim do thread de coleção de contador assíncrono.
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) Não é possível alterar a fonte de dados padrão em tempo real. Há sessões de consulta em tempo real coletando dados de contador.
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) O objeto especificado não foi encontrado no sistema.
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) Não foi possível encontrar o contador especificado.
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) Os dados retornados não são válidos.
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE) Uma função PDH não pôde alocar memória temporária suficiente para concluir a operação. Feche alguns aplicativos ou estenda o arquivo de página e repita a função.
0xC0000BBC (PDH_INVALID_HANDLE) O identificador não é um objeto PDH válido.
0xC0000BBD (PDH_INVALID_ARGUMENT) Um argumento necessário está ausente ou incorreto.
0xC0000BBE (PDH_FUNCTION_NOT_FOUND) Não é possível localizar a função especificada.
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) Nenhum contador foi especificado.
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) Não é possível analisar o caminho do contador. Verifique o formato e a sintaxe do caminho especificado.
0xC0000BC1 (PDH_INVALID_BUFFER) O buffer passado pelo chamador não é válido.
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) Os dados solicitados são maiores do que o buffer fornecido. Não é possível retornar os dados solicitados.
0xC0000BC3 (PDH_CANNOT_CONNECT_MACHINE) Não é possível se conectar ao computador solicitado.
0xC0000BC4 (PDH_INVALID_PATH) Não foi possível interpretar o caminho do contador especificado.
0xC0000BC5 (PDH_INVALID_INSTANCE) Não foi possível ler o nome da instância do caminho do contador especificado.
0xC0000BC6 (PDH_INVALID_DATA) Os dados não são válidos.
0xC0000BC7 (PDH_NO_DIALOG_DATA) O bloco de dados da caixa de diálogo estava ausente ou não era válido.
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) Não é possível ler o contador e/ou ajudar o texto do computador especificado.
0xC0000BC9 (PDH_LOG_FILE_CREATE_ERROR) Não é possível criar o arquivo de log especificado.
0xC0000BCA (PDH_LOG_FILE_OPEN_ERROR) Não é possível abrir o arquivo de log especificado.
0xC0000BCB (PDH_LOG_TYPE_NOT_FOUND) O tipo de arquivo de log especificado não foi instalado neste sistema.
0xC0000BCC (PDH_NO_MORE_DATA) Não existem mais dados disponíveis.
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) O registro especificado não foi encontrado no arquivo de log.
0xC0000BCE (PDH_DATA_SOURCE_IS_LOG_FILE) A fonte de dados especificada é um arquivo de log.
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) A fonte de dados especificada é a atividade atual.
0xC0000BD0 (PDH_UNABLE_READ_LOG_HEADER) Não foi possível ler o cabeçalho do arquivo de log.
0xC0000BD1 (PDH_FILE_NOT_FOUND) Não é possível localizar o arquivo especificado.
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) Já existe um arquivo com o nome de arquivo especificado.
0xC0000BD3 (PDH_NOT_IMPLEMENTED) A função referenciada não foi implementada.
0xC0000BD4 (PDH_STRING_NOT_FOUND) Não é possível localizar a cadeia de caracteres especificada na lista de nome de desempenho e ajudar cadeias de caracteres de texto.
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) Não é possível mapear para os arquivos de dados de nome do contador de desempenho. Os dados serão lidos do registro e armazenados localmente.
0xC0000BD6 (PDH_UNKNOWN_LOG_FORMAT) O formato do arquivo de log especificado não é reconhecido pela DLL PDH.
0xC0000BD7 (PDH_UNKNOWN_LOGSVC_COMMAND) O valor de comando do Serviço de Log especificado não é reconhecido.
0xC0000BD8 (PDH_LOGSVC_QUERY_NOT_FOUND) A consulta especificada do Serviço de Log não pôde ser encontrada ou não pôde ser aberta.
0xC0000BD9 (PDH_LOGSVC_NOT_OPENED) Não foi possível abrir a chave do Serviço de Log de Dados de Desempenho. Isso pode ser devido a privilégios insuficientes ou porque o serviço não foi instalado.
0xC0000BDA (PDH_WBEM_ERROR) Ocorreu um erro ao acessar o armazenamento de dados do WBEM.
0xC0000BDB (PDH_ACCESS_DENIED) Não é possível acessar o computador ou serviço desejado. Verifique as permissões e a autenticação do serviço de log ou da sessão interativa do usuário em relação àqueles no computador ou serviço que está sendo monitorado.
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL) O tamanho máximo do arquivo de log especificado é muito pequeno para registrar os contadores selecionados. Nenhum dado será registrado neste arquivo de log. Especifique um conjunto menor de contadores para registrar em log ou um tamanho de arquivo maior e tentar novamente essa chamada.
0xC0000BDD (PDH_INVALID_DATASOURCE) Não é possível se conectar ao Nome da Fonte de Dados ODBC.
0xC0000BDE (PDH_INVALID_SQLDB) Banco de Dados SQL não contém um conjunto válido de tabelas para Perfmon.
0xC0000BDF (PDH_NO_COUNTERS) Nenhum contador foi encontrado para este Conjunto de Logs do SQL do Perfmon.
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) Falha na chamada para SQLAllocStmt com %1.
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) Falha na chamada para SQLAllocConnect com %1.
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) Falha na chamada para SQLExecDirect com %1.
0xC0000BE3 (PDH_SQL_FETCH_FAILED) Falha na chamada ao SQLFetch com %1.
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) Falha na chamada para SQLRowCount com %1.
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) Falha na chamada para SQLMoreResults com %1.
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) Falha na chamada ao SQLConnect com %1.
0xC0000BE7 (PDH_SQL_BIND_FAILED) Falha na chamada para SQLBindCol com %1.
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) Não é possível se conectar ao servidor WMI no computador solicitado.
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) A coleção "%1!s!" já está em execução.
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) A hora de início especificada é após a hora de término.
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) A coleção "%1!s!" não existe.
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) A hora de término especificada já passou.
0xC0000BED (PDH_PLA_ERROR_NOSTART) A coleção "%1!s!" não começou; marcar o log de eventos do aplicativo para quaisquer erros.
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS) A coleção "%1!s!" já existe.
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) Há uma incompatibilidade no tipo de configurações.
0xC0000BF0 (PDH_PLA_ERROR_FILEPATH) As informações especificadas não resolve a um nome de caminho válido.
0xC0000BF1 (PDH_PLA_SERVICE_ERROR) O serviço "Alertas de Logs & de Desempenho" não respondeu.
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) As informações passadas não são válidas.
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) As informações passadas não são válidas.
0xC0000BF4 (PDH_PLA_ERROR_NAME_TOO_LONG) O nome fornecido é muito longo.
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) O formato de log do SQL está incorreto. O formato correto é SQL:<DSN-name>!<LogSet-Name>.
0xC0000BF6 (PDH_COUNTER_ALREADY_IN_QUERY) O contador de desempenho na chamada PdhAddCounter já foi adicionado na consulta de desempenho. Esse contador é ignorado.
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) Não é possível ler informações de contador e dados de arquivos de log binário de entrada.
0xC0000BF8 (PDH_LOG_SAMPLE_TOO_SMALL) Pelo menos um dos arquivos de log binário de entrada contém menos de dois exemplos de dados.
0xC0000BF9 (PDH_OS_LATER_VERSION) A versão do sistema operacional no computador chamado %1 é posterior à do computador local. Essa operação não está disponível no computador local.
0xC0000BFA (PDH_OS_EARLIER_VERSION) %1 dá suporte a %2 ou posterior. Verifique a versão do sistema operacional no computador chamado %3.
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) O arquivo de saída deve conter dados anteriores do que o arquivo a ser acrescentado.
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) Ambos os arquivos devem ter contadores idênticos para acrescentar.
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) Não é possível alterar o layout da tabela CounterDetail no banco de dados SQL.
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) O sistema está ocupado. Ocorreu um tempo limite ao coletar dados do contador. Tente novamente mais tarde ou aumente o valor do registro CollectTime .