Compartir a través de


Crear una consulta

Para crear una nueva consulta que recopile datos de rendimiento de un archivo de registro o origen en tiempo real, llame a la función PdhOpenQuery . La función devuelve un identificador a la consulta que se usa en llamadas de función PDH posteriores.

Después de crear la consulta, llame a la función PdhAddCounter para cada contador que quiera agregar a la consulta. Puede usar uno de los métodos siguientes para proporcionar la ruta de acceso completa al contador.

  • Defina la ruta de acceso del contador como una cadena estática. Use este método si siempre supervisa el mismo contador y si está familiarizado con la sintaxis correcta de una ruta de acceso de contador. Para obtener información sobre la sintaxis correcta utilizada para especificar un contador, vea Especificar una ruta de acceso de contador.
  • Inicialice una estructura de PDH_COUNTER_PATH_ELEMENTS con los nombres del equipo, el objeto, el contador y la instancia. Pase esta estructura a PdhMakeCounterPath , que devolverá una ruta de acceso de contador para los elementos especificados.
  • Especifique una ruta de acceso de contador que contenga caracteres comodín y llame a PdhExpandWildCardPath para obtener una lista de nombres de contador que coincidan con los caracteres comodín de la ruta de acceso. Examine la lista de nombres de contadores y agregue a la consulta los contadores que desea de esta lista.
  • Llame a la función PdhBrowseCounters para mostrar un cuadro de diálogo que permita al usuario examinar y seleccionar contadores de rendimiento. Para obtener más información, vea Contadores de exploración.

Tenga en cuenta que si se especifica una instancia de contador que no existe, PdhAddCounter no notifica una condición de error. En su lugar, devuelve ERROR_SUCCESS. El motivo de este comportamiento es que no se sabe si se ha especificado una instancia de contador inexistente o una que existirá pero que aún no se ha creado.

La instancia de contador que falta se notificará mediante PdhCollectQueryData, PdhGetRawCounterValue o PdhGetFormattedCounterValue. Al llamar solo a PdhCollectQueryData para una instancia de contador y la instancia de contador sigue sin existir, se supone que la instancia del contador no existirá y la función devuelve PDH_NO_DATA. Sin embargo, si se consulta más de un contador, PdhCollectQueryData todavía puede devolver ERROR_SUCCESS incluso si aún no existe una de las instancias de contador. En este caso, llame a PdhGetRawCounterValue o PdhGetFormattedCounterValue para cada una de las instancias de contador de interés. Si la instancia no existe al llamar a PdhGetRawCounterValue, la función devuelve ERROR_SUCCESS y establece el miembro CStatus de PDH_RAW_COUNTER en PDH_STATUS_NO_INSTANCE. Si la instancia no existe al llamar a PdhGetFormattedCounterValue, la función devuelve PDH_INVALID_DATA y establece el miembro CStatus del PDH_FMT_COUNTERVALUE en PDH_CSTATUS_NO_INSTANCE.

Tenga en cuenta que la ruta de acceso del contador especificada en la función PdhAddCounter debe localizarse. La función PdhAddEnglishCounter proporciona una manera neutra de la configuración regional para agregar contadores de rendimiento a la consulta. Esta función es la manera recomendada de agregar contadores neutrales de configuración regional a una consulta.

Para quitar un contador de una consulta, llame a la función PdhRemoveCounter .

Cuando termine de recopilar datos para una consulta, llame a la función PdhCloseQuery para cerrar la consulta y liberar todos los recursos del sistema asignados. PdhCloseQuery cierra todos los identificadores de contador asociados a la consulta.