Função PdhEnumObjectItemsA (pdh.h)

Retorna os nomes de instância e contador do objeto especificado 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 do contador e da instância. Se 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 principais 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 com término 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 houver zero na entrada e no objeto, 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 usado. Se o tamanho especificado na entrada for maior que zero, mas menor que o tamanho necessário, você não deverá contar com o tamanho retornado para realocar o buffer.

[out] mszInstanceList

Buffer alocado pelo chamador que recebe uma lista de nomes de instância com término 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 houver zero na entrada e no objeto, 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 usado. Se o tamanho especificado na entrada for maior que zero, mas menor que o tamanho necessário, você não deverá contar com o tamanho retornado para realocar o buffer.

Se o objeto especificado não oferecer 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 é do tamanho de uma cadeia de caracteres de lista de MULTI_SZ vazia.

[in] dwDetailLevel

Nível de detalhes dos itens de desempenho a serem retornados. Todos os itens que são 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.

Valor Significado
PERF_DETAIL_NOVICE
Nível de detalhes do usuário iniciante.
PERF_DETAIL_ADVANCED
Nível avançado de detalhes do usuário.
PERF_DETAIL_EXPERT
Nível de usuário especializado de detalhes.
PERF_DETAIL_WIZARD
Nível de detalhes do designer do sistema.

[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. A seguir estão os valores possíveis.

Código de retorno Descrição
PDH_MORE_DATA
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á contar com o tamanho retornado para realocar o buffer.
PDH_INVALID_ARGUMENT
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.
PDH_MEMORY_ALLOCATION_FAILURE
Não é possível alocar memória para dar suporte a essa função.
PDH_CSTATUS_NO_MACHINE
O computador especificado está offline ou indisponível.
PDH_CSTATUS_NO_OBJECT
Não foi possível encontrar o objeto especificado 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 (definir 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 sinalizador bRefreshde TRUE antes de chamar PdhEnumObjectItems novamente.

A ordem dos nomes da instância e do 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

   
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

Confira também

PdhEnumObjectItemsH

PdhEnumObjects