Função PdhEnumObjectItemsA (pdh.h)
Retorna o contador do objeto especificado e os nomes de instância que existem no computador especificado ou no arquivo de log especificado.
Para usar identificadores para fontes de dados, use a função PdhEnumObjectItemsH .
Sintaxe
PDH_FUNCTION PdhEnumObjectItemsA(
[in] LPCSTR szDataSource,
[in] LPCSTR szMachineName,
[in] LPCSTR szObjectName,
[out] PZZSTR mszCounterList,
[in, out] LPDWORD pcchCounterListLength,
[out] PZZSTR mszInstanceList,
[in, out] LPDWORD pcchInstanceListLength,
[in] DWORD dwDetailLevel,
[in] DWORD dwFlags
);
Parâmetros
[in] szDataSource
Cadeia de caracteres terminada em nulo que especifica o nome do arquivo de log usado para enumerar os nomes de contador e instância. Se FOR NULL, a função usará o computador especificado em
o parâmetro szMachineName para enumerar os nomes.
[in] szMachineName
Cadeia de caracteres terminada em nulo que especifica o nome do computador que contém o contador e os nomes de instância que você deseja enumerar.
Inclua as barras à esquerda no nome do computador, por exemplo, \computername.
Se o parâmetro szDataSource for NULL, você poderá definir szMachineName como NULL para especificar o computador local.
[in] szObjectName
Cadeia de caracteres terminada em nulo que especifica o nome do objeto cujo contador e nomes de instância você deseja enumerar.
[out] mszCounterList
Buffer alocado pelo chamador que recebe uma lista de nomes de contador terminados em nulo fornecidos pelo objeto especificado. A lista contém nomes de contador exclusivos. A lista é encerrada por dois caracteres NULL . Defina como NULL se o parâmetro pcchCounterListLength for zero.
[in, out] pcchCounterListLength
Tamanho do buffer mszCounterList , em TCHARs. Se zero na entrada e o objeto existirem, a função retornará PDH_MORE_DATA e definirá esse parâmetro como o tamanho do buffer necessário. Se o buffer for maior que o tamanho necessário, a função definirá esse parâmetro como o tamanho real do buffer que foi usado. Se o tamanho especificado na entrada for maior que zero, mas menor que o tamanho necessário, você não deverá depender do tamanho retornado para realocar o buffer.
[out] mszInstanceList
Buffer alocado pelo chamador que recebe uma lista de nomes de instância terminadas em nulo fornecidos pelo objeto especificado. A lista contém nomes de instância exclusivos. A lista é encerrada por dois caracteres NULL . Defina como NULL se pcchInstanceListLength for zero.
[in, out] pcchInstanceListLength
Tamanho do buffer mszInstanceList , em TCHARs. Se zero na entrada e o objeto existirem, a função retornará PDH_MORE_DATA e definirá esse parâmetro como o tamanho do buffer necessário. Se o buffer for maior que o tamanho necessário, a função definirá esse parâmetro como o tamanho real do buffer que foi usado. Se o tamanho especificado na entrada for maior que zero, mas menor que o tamanho necessário, você não deverá depender do tamanho retornado para realocar o buffer.
Se o objeto especificado não der suporte a instâncias variáveis, o valor retornado será zero. Se o objeto especificado der suporte a instâncias variáveis, mas não tiver nenhuma instância no momento, o valor retornado será 2, que é o tamanho de uma cadeia de caracteres de lista MULTI_SZ vazia.
[in] dwDetailLevel
Nível de detalhes dos itens de desempenho a serem retornados. Todos os itens do nível de detalhes especificado ou menos serão retornados (os níveis são listados em ordem crescente). Esse parâmetro pode usar um dos valores a seguir.
[in] dwFlags
Esse parâmetro deve ser zero.
Retornar valor
Se a função for bem-sucedida, ela retornará ERROR_SUCCESS.
Se a função falhar, o valor retornado será um código de erro do sistema ou um código de erro PDH. Veja a seguir os valores possíveis.
Código de retorno | Descrição |
---|---|
|
Um dos buffers é muito pequeno para conter a lista de nomes. Esse valor retornado será esperado se pcchCounterListLength ou pcchInstanceListLength for zero na entrada. Se o tamanho especificado na entrada for maior que zero, mas menor que o tamanho necessário, você não deverá depender do tamanho retornado para realocar o buffer. |
|
Um parâmetro não é válido. Por exemplo, em algumas versões, você poderá receber esse erro se o tamanho especificado na entrada for maior que zero, mas menor que o tamanho necessário. |
|
Não é possível alocar memória para dar suporte a essa função. |
|
O computador especificado está offline ou indisponível. |
|
O objeto especificado não pôde ser encontrado no computador especificado ou no arquivo de log especificado. |
Comentários
Você deve chamar essa função duas vezes, a primeira vez para obter o tamanho do buffer necessário (defina os buffers como NULL e os tamanhos como 0) e a segunda vez para obter os dados.
Chamadas consecutivas para essa função retornarão listas idênticas de contadores e instâncias, pois PdhEnumObjectItems sempre consultará a lista de objetos de desempenho definidos pela última chamada para PdhEnumObjects ou PdhEnumObjectItems. Para atualizar a lista de objetos de desempenho, chame PdhEnumObjects com um valor de sinalizadorbRefresh true antes de chamar PdhEnumObjectItems novamente.
A ordem dos nomes de instância e contador é indeterminada.
Exemplos
Para obter um exemplo, consulte Enumerando objetos de processo.
Observação
O cabeçalho pdh.h define PdhEnumObjectItems como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | pdh.h |
Biblioteca | Pdh.lib |
DLL | Pdh.dll |