Función KeSetHardwareCounterConfiguration (ntddk.h)
La rutina KeSetHardwareCounterConfiguration especifica una lista de contadores de hardware que se usarán para la generación de perfiles de subprocesos.
Sintaxis
NTSTATUS KeSetHardwareCounterConfiguration(
[in] PHARDWARE_COUNTER CounterArray,
[in] ULONG Count
);
Parámetros
[in] CounterArray
Puntero a una matriz de HARDWARE_COUNTER que describe la configuración del contador de hardware que se va a usar para la generación de perfiles de subprocesos. Cada elemento de matriz es una estructura que describe un contador de hardware. Antes de que la rutina vuelva, copia el contenido de esta matriz en sus estructuras de datos internas.
[in] Count
Especifica el número de elementos de la matriz a los que apunta el parámetro CounterArray .
Valor devuelto
KeSetHardwareCounterConfiguration devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Entre los posibles valores devueltos de error se incluyen los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_INVALID_PARAMETER | El valor del parámetro Count supera el número máximo de contadores especificados por la constante MAX_HW_COUNTERS, que se define en el archivo de encabezado Ntddk.h. |
STATUS_WMI_ALREADY_ENABLED | Uno o varios de los contadores especificados en la matriz CounterArray ya están habilitados. |
STATUS_NOT_IMPLEMENTED | Esta rutina no se implementa para la arquitectura del procesador en la que se ejecuta el autor de la llamada. |
Comentarios
En Windows 7, esta rutina solo se implementa para las arquitecturas basadas en x86, x64 y itanium. Si un autor de llamada se ejecuta en una arquitectura de procesador que no se admite, la rutina devuelve STATUS_NOT_IMPLEMENTED.
Esta rutina indica al sistema operativo qué contadores de hardware usar para la generación de perfiles de subprocesos. Llame a esta rutina solo cuando se deshabilite la generación de perfiles de subprocesos. Si la matriz CounterArray especifica los contadores de hardware que se están usando actualmente, la rutina produce un error y devuelve STATUS_WMI_ALREADY_ENABLED.
Un subproceso de aplicación puede habilitar la generación de perfiles de subprocesos para obtener un conjunto de medidas de rendimiento de los contadores de hardware de la unidad de supervisión de rendimiento (PMU) del procesador local. El sistema operativo solo admite una aplicación de generación de perfiles a la vez. No se admiten instancias simultáneas de una aplicación de generación de perfiles de subprocesos. Un subproceso puede habilitar la generación de perfiles de subprocesos para sí mismo, pero no para otros subprocesos.
Cuando se habilita la generación de perfiles de subprocesos, el sistema operativo usa los contadores de hardware especificados en la última llamada a KeSetHardwareCounterConfiguration. Cada llamada a KeSetHardwareCounterConfiguration correcta reemplaza cualquier configuración de contador de hardware que se haya establecido en una llamada anterior a KeSetHardwareCounterConfiguration .
Establezca Count = 0 para especificar una configuración de contador de hardware vacía. Esta configuración evita eficazmente el uso de contadores de hardware para la generación de perfiles de subprocesos. La configuración predeterminada del contador de hardware que existe después del inicio del sistema y antes de la llamada inicial a KeSetHardwareCounterConfiguration es una configuración vacía.
El efecto de una llamada a KeSetHardwareCounterConfiguration correcta es global. Si se genera un perfil de un subproceso en cualquier proceso, el generador de perfiles usa la configuración del contador de hardware establecida por la última llamada a KeSetHardwareCounterConfiguration. En un sistema multiprocesador, una llamada KeSetHardwareCounterConfiguration establece la configuración del contador de hardware que se usará para la generación de perfiles de subprocesos en todos los procesadores del sistema, aunque cada procesador usa su propio conjunto de contadores de hardware.
Para evitar conflictos de recursos, todos los controladores que usan recursos de contador deben usar las rutinas HalAllocateHardwareCounters y HalFreeHardwareCounters para coordinar su uso compartido de estos recursos.
Para determinar si la generación de perfiles de subprocesos está habilitada para un subproceso determinado, llame a la función QueryThreadProfiling .
Para consultar el sistema operativo para la configuración del contador de hardware que está actualmente en vigor para la generación de perfiles de subprocesos, llame a la rutina KeQueryHardwareCounterConfiguration .
Normalmente, el software de virtualización no virtualiza los contadores de rendimiento de hardware. Por lo tanto, es poco probable que los contadores de rendimiento de hardware estén disponibles en una máquina virtual.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 7. |
Plataforma de destino | Universal |
Encabezado | ntddk.h (incluya Ntddk.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Consulte también
Referencia de generación de perfiles de contadores de hardware