Función ExSetTimerResolution (wdm.h)
La rutina ExSetTimerResolution modifica la frecuencia con la que se interrumpe el reloj del sistema. Use esta rutina con extrema precaución (consulte la siguiente sección Comentarios).
Sintaxis
ULONG ExSetTimerResolution(
[in] ULONG DesiredTime,
[in] BOOLEAN SetResolution
);
Parámetros
[in] DesiredTime
Especifica la cantidad de tiempo que debe transcurrir entre cada interrupción del temporizador, en unidades de 100 nanosegundos. El valor mínimo es de aproximadamente 10 000 (1 milisegundos), pero puede variar ligeramente por plataforma. (Este parámetro se omite si SetResolution es FALSE).
[in] SetResolution
Si TRUE, la llamada es una solicitud para establecer la frecuencia de interrupción del reloj en el valor especificado por DesiredTime. Si FALSE, la llamada es una solicitud para restaurar la frecuencia de interrupción del reloj al valor predeterminado del sistema, que es específico de la plataforma.
Valor devuelto
exSetTimerResolution devuelve la nueva resolución del temporizador, en unidades de 100 nanosegundos.
Observaciones
Para establecer la resolución del temporizador, un controlador llama a esta rutina pasando TRUE como parámetro para SetResolution. Se aplican las reglas siguientes:
La rutina cambia la frecuencia de interrupción del reloj solo si el valor de DesiredTime especificado es menor que el valor actual.
Si un controlador solicita un valor de DesiredTime mayor que lo que está establecido actualmente, la rutina solo devuelve la configuración actual.
Si un controlador solicita un valor de DesiredTime menor que el reloj del sistema puede admitir, la rutina usa la resolución más pequeña que el sistema puede admitir y devuelve ese valor.
Si usa esta rutina para cambiar la frecuencia de interrupción del reloj, el controlador debe restaurar la frecuencia de interrupción predeterminada, normalmente realizando la siguiente llamada antes de descargarse:
ExSetTimerResolution (0, FALSE);
Si varios controladores han intentado modificar la frecuencia de interrupción del reloj, el sistema no restaura la frecuencia predeterminada hasta que todos estos controladores hayan llamado a esta rutina con un valor SetResolution de FALSE.
El resultado de cambiar la frecuencia de interrupción del reloj es de todo el sistema y puede tener un efecto gravemente negativo en el rendimiento del sistema. Tenga en cuenta también que las frecuencias de interrupción del reloj más altas pueden acortar la duración de la batería de un sistema.
Durante el procesamiento de una solicitud de IRP_MJ_POWER, el administrador de energía contiene un bloqueo en un recurso que exSetTimerResolution debe adquirir para completarse. Por lo tanto, se producirá un interbloqueo si un controlador llama directa o indirectamente ExSetTimerResolution mientras procesa una solicitud de energía y, a continuación, espera a que la llamada a ExSetTimerResolution devolver antes de que el controlador complete la solicitud de energía. Para obtener más información sobre cómo llamar de forma segura a ExSetTimerResolution al procesar un IRP de energía, consulte Llamada a ExSetTimerResolution al procesar unade Power IRP.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Universal |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | IRQL <= APC_LEVEL |
reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlExApcLte2(wdm) |