Creación de un archivo DLL de extensión de rendimiento
Importante
Debido a limitaciones significativas de rendimiento y confiabilidad, el método para proporcionar datos de contador de rendimiento que se describen en este tema puede modificarse o no estar disponible en el futuro. En su lugar, Microsoft recomienda usar el método descrito en Proporcionar datos de contador con la versión 2.0 para crear nuevos contadores de rendimiento y migrar también los contadores de rendimiento existentes para usar ese método.
Un proveedor V1 usa un archivo DLL de rendimiento que proporciona datos de contador a los consumidores. El archivo DLL de rendimiento debe exportar las funciones OpenPerformanceData, CollectPerformanceData y ClosePerformanceData . Normalmente, se usa un archivo de definición de módulo (.def) para exportar las funciones desde el archivo DLL. El sistema llama a estas funciones cuando un consumidor consulta datos de rendimiento.
La primera vez que un consumidor llama a RegQueryValueEx, o si el consumidor usa la función RegOpenKey o RegConnectRegistry para abrir HKEY_PERFORMANCE_DATA
, el sistema llama a la función OpenPerformanceData para cada proveedor registrado en el equipo. La excepción es si el proveedor especifica la lista de objetos que admite en la [objects]
sección del archivo .INI. En este caso, el sistema llama al proveedor solo si uno de los objetos consultados coincide con un objeto de la lista.
La función OpenPerformanceData ofrece a cada proveedor una oportunidad para inicializar sus estructuras de datos de rendimiento. A continuación, si la función OpenPerformanceData devuelve correctamente, el sistema llama a la función CollectPerformanceData del proveedor. Las llamadas posteriores a RegQueryValueEx hacen que el sistema llame a la función CollectPerformanceData .
Cuando el consumidor termina de recopilar datos de rendimiento, especifica HKEY_PERFORMANCE_DATA
en una llamada a la función RegCloseKey . Esto hace que el sistema llame a la función ClosePerformanceData para cada proveedor. A continuación, se descargan los proveedores.
Es posible que varios consumidores recopilen datos de rendimiento al mismo tiempo. El sistema llama a las funciones OpenPerformanceData y ClosePerformanceData solo una vez cada vez que se carga o descarga el archivo DLL.
Nota
Asegúrese de incluir extern "C" en el código de C++ para evitar que el compilador agregue decoraciones a los nombres de función; de lo contrario, es posible que el sistema no encuentre las funciones.
Nota
Si se produce un error al cargar el archivo DLL de rendimiento, buscar las funciones o llamar a las funciones, el sistema deshabilitará el proveedor para las recopilaciones posteriores dentro del mismo proceso. Además, si esto ocurre mientras se ejecuta en un proceso con privilegios, el sistema agrega un valor Deshabilitar contadores de rendimiento a la clave de rendimiento para evitar que el proveedor se cargue en el futuro.
Para obtener más información sobre cómo escribir un archivo DLL de rendimiento, consulte los temas siguientes: