Compartir a través de


Función KeSetTimerEx (wdm.h)

La rutina KeSetTimerEx establece el intervalo absoluto o relativo en el que se va a establecer un objeto de temporizador en un estado señalado, opcionalmente proporciona un CustomTimerDpc rutina que se va a ejecutar cuando expira ese intervalo y, opcionalmente, proporciona un intervalo periódico para el temporizador.

Sintaxis

BOOLEAN KeSetTimerEx(
  [in, out]      PKTIMER       Timer,
  [in]           LARGE_INTEGER DueTime,
  [in]           LONG          Period,
  [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 expira 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. El tiempo 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 en la hora del sistema.

[in] Period

Especifica un intervalo periódico opcional para el temporizador en milisegundos. Debe ser un valor mayor o igual que cero. Si el valor de este parámetro es cero, el temporizador es un temporizador no experimental que no vuelve a poner en cola automáticamente.

[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, keSetTimerEx devuelve TRUE.

Observaciones

La rutina KeSetTimerEx hace lo siguiente:

  • Calcula la hora de expiración.

  • Establece el temporizador en un estado no señalizado.

  • Establece el intervalo periódico para el temporizador, si se especificó uno.

  • 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 keSetTimerEx antes de que el DueTime especificado anteriormente haya expirado cancela el temporizador y la llamada al Dpc, si existe, asociado a la llamada anterior.

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, vea Precisión del temporizador.

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 se establece en un estado señalado. Si un objeto DPC estaba asociado al temporizador cuando se estableció, el objeto DPC se inserta en la cola DPC del sistema para que se ejecute tan pronto como las condiciones permitan después de que expire el intervalo del temporizador.

Una rutina DPC no puede desasignar un temporizador periódico. Una rutina DPC puede desasignar un temporizador noperiodico.

Tenga en cuenta que un temporizador periódico se reinicia automáticamente en cuanto expira. Por lo tanto, en una máquina multiprocesador, el DPC para un temporizador periódico se puede ejecutar simultáneamente en dos procesadores.

Solo se puede poner en cola una instancia de un objeto DPC determinado en cualquier momento dado. Para evitar posibles condiciones de carrera, el DPC pasado a keSetTimerEx no debe pasarse a KeInsertQueueDpc.

Los controladores deben cancelar los temporizadores activos en sus rutinas Descargar. Use keCancelTimer para cancelar los temporizadores.

Para obtener más información sobre los objetos de temporizador, vea Objetos de temporizador y DPCs.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
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 <= DISPATCH_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Consulte también

keCancelTimer

KeInitializeDpc

keInitializeTimer

keInitializeTimerEx

KeReadStateTimer

keWaitForMultipleObjects

KeWaitForSingleObject