Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los componentes en modo kernel proporcionan contadores de rendimiento mediante las API contadores de rendimiento para Windows (PCW).
Siga estos pasos para desarrollar nuevos proveedores de datos de contadores:
Escriba un manifiesto de contador que describa el proveedor y sus conjuntos de contadores. El manifiesto del contador es un archivo de formato XML que define el proveedor de contadores de rendimiento y sus conjuntos de contadores.
- Establezca el
applicationIdentityatributo en el nombre de un binario que se instalará como parte del componente en modo kernel y que contendrá los recursos de cadena necesarios para los consumidores de datos de rendimiento. - Defina el atributo
providerTypeakernelMode. - Defina al menos un
structelemento (encounterSet/structs) con el nombre de una estructura de C/C++ que se usará al pasar valores de contador del componente a las API de PCW. - En cada
counter, defina yfieldstructdesde el que PCW debe leer el valor del contador.
- Establezca el
Como parte del proceso de compilación del componente, use la herramienta CTRPP para compilar el manifiesto del contador. (La herramienta Preprocesador de contadores (CTRPP) se incluye en el WDK y está disponible en el símbolo del sistema para desarrolladores escribiendo
ctrpp.) La herramienta CTRPP generará un.rcarchivo y un.harchivo.- La herramienta Compilador de recursos (RC.exe) debe compilar el archivo generado
.rcpor CTRPP y el archivo resultante.resdebe estar vinculado al binario denominado en elapplicationIdentityatributo . Puede compilar directamente el archivo generado por.rcCTRPP o puede#includeel archivo generado por.rcCTRPP en un archivo existente.rcque se compila en el binario. - El archivo generado por
.hCTRPP contiene funciones auxiliares que encapsulan las API de PCW subyacentes. Por ejemplo, el archivo generado por.hCTRPP contendrá una función RegisterXxx que llamaPcwRegistera en su nombre. En la mayoría de los casos, llamará a las funciones auxiliares generadas por CTRPP en lugar de llamar directamente a cualquier API de PCW, pero puede consultar la documentación de las API de PCW para comprender lo que hacen las funciones generadas por CTRPP correspondientes. Las funciones auxiliares administran la traducción del diseño de datos del contador del componente alPCW_DATAdiseño esperado por las API de PCW.
- La herramienta Compilador de recursos (RC.exe) debe compilar el archivo generado
En la inicialización de componentes, invoque la función RegisterXxx generada por CTRPP, que llama a PcwRegister. Al apagar el componente, invoque la función UnregisterXxx generada por CTRPP, que llama a PcwUnregister.
Agregue código para proporcionar datos de contador. Esto se hace implementando una función de devolución de llamada PCW_CALLBACK o manteniendo estructuras de datos con valores de contador para cada instancia e invocando las funciones CreateInstanceXxx y CloseInstanceXxx generadas por CTRPP a medida que se crean y destruyen las instancias.
En la instalación de componentes, use
lodctr /m:<CounterManifest> <InstallPath>para instalar el proveedor. En la desinstalación de componentes, useunlodctr(con/mo/gparámetros) para desinstalar el proveedor. La instalación del proveedor agrega los conjuntos de contadores del proveedor a un repositorio de conjuntos de contadores disponibles para que los consumidores de datos de rendimiento puedan usar los conjuntos de contadores, como perfmon, typeperf o WMI. En concreto, al instalar el proveedor se registra la ruta de acceso completa al archivo binario (DLL, SYS o EXE) que contiene la tabla de cadenas del proveedor. La ruta de acceso completa al archivo binario se determina mediante la combinación del atributo delapplicationIdentitymanifiesto con los<CounterManifest>valores y<InstallPath>usados en la línea de comandos de lalodctrsiguiente manera:- Si el
applicationIdentityatributo es una ruta de acceso completa, se usará. - De lo contrario, si el
<InstallationPath>parámetro es una ruta de acceso completa, se usará. - De lo contrario, si el
<CounterManifest>parámetro es una ruta de acceso completa, el directorio de<CounterManifest>se combinará con el nombre de archivo delapplicationIdentityatributo . - De lo contrario, el directorio de trabajo actual se combinará con el nombre de archivo del
applicationIdentityatributo .
- Si el
Para obtener un ejemplo de un proveedor PCW en modo kernel, consulte el ejemplo de contador de kernel (Kcs) en el repositorio de ejemplos de controladores de Windows en GitHub.
Consulte también
Supervisión del rendimiento del modo kernel