Función PdhEnumObjectItemsW (pdh.h)

Devuelve el contador y los nombres de instancia del objeto especificados que existen en el equipo especificado o en el archivo de registro especificado.

Para usar identificadores para orígenes de datos, use la función PdhEnumObjectItemsH .

Sintaxis

PDH_FUNCTION PdhEnumObjectItemsW(
  [in]      LPCWSTR szDataSource,
  [in]      LPCWSTR szMachineName,
  [in]      LPCWSTR szObjectName,
  [out]     PZZWSTR mszCounterList,
  [in, out] LPDWORD pcchCounterListLength,
  [out]     PZZWSTR mszInstanceList,
  [in, out] LPDWORD pcchInstanceListLength,
  [in]      DWORD   dwDetailLevel,
  [in]      DWORD   dwFlags
);

Parámetros

[in] szDataSource

Cadena terminada en NULL que especifica el nombre del archivo de registro utilizado para enumerar los nombres de contador e instancia. Si es NULL, la función usa el equipo especificado en

el parámetro szMachineName para enumerar los nombres.

[in] szMachineName

Cadena terminada en NULL que especifica el nombre del equipo que contiene los nombres de contador e instancia que desea enumerar.

Incluya las barras diagonales iniciales en el nombre del equipo, por ejemplo, \computername.

Si el parámetro szDataSource es NULL, puede establecer szMachineName en NULL para especificar el equipo local.

[in] szObjectName

Cadena terminada en NULL que especifica el nombre del objeto cuyos nombres de contador e instancia desea enumerar.

[out] mszCounterList

Búfer asignado por el autor de la llamada que recibe una lista de nombres de contador terminados en null proporcionados por el objeto especificado. La lista contiene nombres de contador únicos. La lista finaliza con dos caracteres NULL . Se establece en NULL si el parámetro pcchCounterListLength es cero.

[in, out] pcchCounterListLength

Tamaño del búfer mszCounterList , en TCHAR. Si hay cero en la entrada y el objeto, la función devuelve PDH_MORE_DATA y establece este parámetro en el tamaño de búfer necesario. Si el búfer es mayor que el tamaño necesario, la función establece este parámetro en el tamaño real del búfer que se usó. Si el tamaño especificado en la entrada es mayor que cero pero menor que el tamaño necesario, no debe confiar en el tamaño devuelto para reasignar el búfer.

[out] mszInstanceList

Búfer asignado por el autor de la llamada que recibe una lista de nombres de instancia terminados en null proporcionados por el objeto especificado. La lista contiene nombres de instancia únicos. La lista finaliza con dos caracteres NULL . Se establece en NULL si pcchInstanceListLength es cero.

[in, out] pcchInstanceListLength

Tamaño del búfer mszInstanceList , en TCHAR. Si hay cero en la entrada y el objeto, la función devuelve PDH_MORE_DATA y establece este parámetro en el tamaño de búfer necesario. Si el búfer es mayor que el tamaño necesario, la función establece este parámetro en el tamaño real del búfer que se usó. Si el tamaño especificado en la entrada es mayor que cero pero menor que el tamaño necesario, no debe confiar en el tamaño devuelto para reasignar el búfer.

Si el objeto especificado no admite instancias de variables, el valor devuelto será cero. Si el objeto especificado admite instancias de variables, pero actualmente no tiene ninguna instancia, el valor devuelto es 2, que es el tamaño de una cadena de lista de MULTI_SZ vacía.

[in] dwDetailLevel

Nivel de detalle de los elementos de rendimiento que se van a devolver. Se devolverán todos los elementos que son del nivel de detalle especificado o menos (los niveles se muestran en orden creciente). Este parámetro puede ser uno de los valores siguientes.

Valor Significado
PERF_DETAIL_NOVICE
Nivel de detalle del usuario principiante.
PERF_DETAIL_ADVANCED
Nivel de detalle avanzado del usuario.
PERF_DETAIL_EXPERT
Nivel de detalle del usuario experto.
PERF_DETAIL_WIZARD
Nivel de detalle del diseñador del sistema.

[in] dwFlags

Este parámetro debe ser cero.

Valor devuelto

Si la función se realiza correctamente, devuelve ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto es un código de error del sistema o un código de error PDH. A continuación se muestran los valores posibles.

Código devuelto Descripción
PDH_MORE_DATA
Uno de los búferes es demasiado pequeño para contener la lista de nombres. Este valor devuelto se espera si pcchCounterListLength o pcchInstanceListLength es cero en la entrada. Si el tamaño especificado en la entrada es mayor que cero pero menor que el tamaño necesario, no debe confiar en el tamaño devuelto para reasignar el búfer.
PDH_INVALID_ARGUMENT
Un parámetro no es válido. Por ejemplo, en algunas versiones podría recibir este error si el tamaño especificado en la entrada es mayor que cero pero menor que el tamaño necesario.
PDH_MEMORY_ALLOCATION_FAILURE
No se puede asignar memoria para admitir esta función.
PDH_CSTATUS_NO_MACHINE
El equipo especificado está sin conexión o no está disponible.
PDH_CSTATUS_NO_OBJECT
No se encontró el objeto especificado en el equipo especificado ni en el archivo de registro especificado.

Comentarios

Debe llamar a esta función dos veces, la primera vez que obtenga el tamaño de búfer necesario (establezca los búferes en NULL y los tamaños en 0) y la segunda vez para obtener los datos.

Las llamadas consecutivas a esta función devolverán listas idénticas de contadores e instancias, ya que PdhEnumObjectItems siempre consultará la lista de objetos de rendimiento definidos por la última llamada a PdhEnumObjects o PdhEnumObjectItems. Para actualizar la lista de objetos de rendimiento, llame a PdhEnumObjects con un valor de marca bRefresh de TRUE antes de volver a llamar a PdhEnumObjectItems .

El orden de los nombres de instancia y contador es indefinido.

Ejemplos

Para obtener un ejemplo, vea Enumerar objetos de proceso.

Nota

El encabezado pdh.h define PdhEnumObjectItems como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado pdh.h
Library Pdh.lib
Archivo DLL Pdh.dll

Consulte también

PdhEnumObjectItemsH

PdhEnumObjects