Función KeSetTimer (wdm.h)
La rutina KeSetTimer establece el intervalo absoluto o relativo en el que se va a establecer un objeto de temporizador en un estado señalado y, opcionalmente, proporciona una rutina CustomTimerDpc que se ejecutará cuando expire ese intervalo.
Sintaxis
BOOLEAN KeSetTimer(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in, optional] PKDPC Dpc
);
Parámetros
[in, out] Timer
Puntero a un objeto de temporizador que se inicializó con KeInitializeTimer o KeInitializeTimerEx.
[in] DueTime
Especifica el tiempo absoluto o relativo en el que expirará el temporizador. Si el valor del parámetro DueTime es negativo, la hora de expiración es relativa a la hora actual del sistema. De lo contrario, la hora de expiración es absoluta. La hora de expiración se expresa en unidades de tiempo del sistema (intervalos de 100 nanosegundos). Los tiempos de expiración absolutos realizan un seguimiento de los cambios en la hora del sistema; los tiempos de expiración relativos no se ven afectados por los cambios de hora del sistema.
[in, optional] Dpc
Puntero a un objeto DPC inicializado por KeInitializeDpc. Este parámetro es opcional.
Valor devuelto
Si el objeto de temporizador ya estaba en la cola del temporizador del sistema, KeSetTimer devuelve TRUE.
Comentarios
La rutina KeSetTimer hace lo siguiente:
Calcula la hora de expiración.
Establece el temporizador en un estado no señalado.
Inserta el objeto de temporizador en la cola del temporizador del sistema.
Si el objeto de temporizador ya estaba en la cola del temporizador, se cancela implícitamente antes de establecerse en la nueva hora de expiración. Una llamada a KeSetTimer antes de que el dueTime especificado anteriormente haya expirado cancela el temporizador y la llamada a Dpc, si existe, asociada a la llamada anterior.
Si se especifica el parámetro Dpc , se asocia un objeto DPC al objeto de temporizador. Cuando expira el temporizador, el objeto de temporizador se quita de la cola del temporizador del sistema y su estado se establece en señalado. Si un objeto DPC estaba asociado al temporizador cuando se estableció, el objeto DPC se inserta en la cola DPC del sistema que se ejecutará tan pronto como las condiciones permitan después de que expire el intervalo del temporizador.
Los tiempos de expiración se miden en relación con el reloj del sistema y la precisión con la que el sistema operativo puede detectar cuándo expira un temporizador está limitado por la granularidad del reloj del sistema. Para obtener más información, consulte Precisión del temporizador.
Solo se puede poner en cola una instancia de un objeto DPC determinado en un momento dado. Para evitar posibles condiciones de carrera, el DPC pasado a KeSetTimer no debe pasarse a KeInsertQueueDpc.
Los controladores deben cancelar los temporizadores activos en sus rutinas de descarga . Use KeCancelTimer para cancelar los temporizadores.
Los autores de llamadas de KeSetTimer pueden especificar una hora de expiración para un temporizador. Para establecer un temporizador periódico, use KeSetTimerEx.
Para obtener más información sobre los objetos de temporizador, vea Objetos de temporizador y DDC.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |