Función ExAllocateTimer (wdm.h)

La rutina ExAllocateTimer asigna e inicializa un objeto de temporizador.

Sintaxis

PEX_TIMER ExAllocateTimer(
  [in, optional] PEXT_CALLBACK Callback,
  [in, optional] PVOID         CallbackContext,
  [in]           ULONG         Attributes
);

Parámetros

[in, optional] Callback

Puntero a una rutina de devolución de llamada exTimerCallback implementada por el controlador. El sistema operativo llama a esta rutina cuando expira el temporizador. Este parámetro es opcional y puede ser NULL si no se necesita ninguna rutina de devolución de llamada.

[in, optional] CallbackContext

Valor de contexto para la rutina de devolución de llamada a la que apunta el parámetro Callback . El sistema operativo pasa este valor como parámetro a la rutina de devolución de llamada ExTimerCallback , si se especifica una. Este parámetro suele ser un puntero a una estructura definida por el autor de la llamada que contiene información de contexto utilizada por la rutina de devolución de llamada. Este parámetro es opcional y se puede establecer en NULL si no se necesita información de contexto.

[in] Attributes

Atributos del temporizador. Establezca este parámetro en cero o en el or bit a bit de uno o varios de los siguientes bits de marca de temporizador.

Bit de marca del temporizador Descripción
EX_TIMER_HIGH_RESOLUTION Temporizador de alta resolución. Haga que el temporizador sea más preciso mediante un reloj de mayor resolución para impulsar el temporizador.
EX_TIMER_NO_WAKE Temporizador sin reactivación. Haga que el retraso del temporizador desperte el procesador para que expire hasta que se supere la hora de expiración del temporizador más su tolerancia de retraso.
EX_TIMER_NOTIFICATION Temporizador de notificación. Convierta el temporizador en un temporizador de notificación en lugar de un temporizador de sincronización. Si no se establece esta marca, el temporizador es un temporizador de sincronización.
 

El bit de marca EX_TIMER_NOTIFICATION se puede establecer independientemente de qué otros bits de marca se establecen.

Los bits de marca EX_TIMER_HIGH_RESOLUTION y EX_TIMER_NO_WAKE son mutuamente excluyentes. Si el autor de la llamada establece ambos bits de marca, se comprueban los errores rutinarios.

Para obtener más información sobre los atributos del temporizador, vea Comentarios.

Valor devuelto

Esta rutina devuelve un puntero a una estructura EX_TIMER , si la llamada se realiza correctamente. Esta estructura es el objeto de temporizador que la rutina ha asignado e inicializado. Si se produce un error en la llamada, la rutina devuelve NULL.

Comentarios

Esta rutina devuelve un puntero al nuevo objeto de temporizador. Para usar el temporizador, el controlador de llamada proporciona este puntero en llamadas posteriores a las rutinas ExSetTimer, ExCancelTimer y ExDeleteTimer . Si el controlador proporciona un puntero a una rutina de devolución de llamada ExTimerCallback como parámetro de entrada a la rutina ExAllocateTimer , el sistema operativo pasa este objeto de temporizador como parámetro de entrada a la rutina ExTimerCallback .

Un temporizador puede ser un temporizador de notificación o un temporizador de sincronización. Cuando se señala un temporizador de notificación, todos los subprocesos en espera tienen su espera satisfecho. El estado de este temporizador permanece señalado hasta que se restablece explícitamente. Cuando expira un temporizador de sincronización, su estado se establece en señalado hasta que se libera un único subproceso en espera. A continuación, el temporizador se restablece al estado no señalado.

Si el bit de marca de EX_TIMER_HIGH_RESOLUTION se establece en Atributos, el sistema operativo aumenta la resolución del reloj del sistema, según sea necesario, para que las horas en las que el temporizador expire más precisamente se correspondan con los tiempos de expiración nominal especificados en los parámetros DueTime y Period a la rutina ExSetTimer . Para obtener más información, consulte Temporizadores de alta resolución.

Si el bit de marca de EX_TIMER_NO_WAKE se establece en Atributos, el temporizador evita reactivar innecesariamente el procesador de un estado de bajo consumo. Para obtener más información, vea Temporizadores sin reactivación.

ExAllocateTimer asigna el almacenamiento para el objeto de temporizador. Cuando este objeto ya no es necesario, el autor de la llamada es responsable de liberar este objeto llamando a la rutina ExDeleteTimer .

El parámetro Callback es opcional. En su lugar, un controlador que no proporciona una rutina ExTimerCallback puede iniciar una operación de espera en el objeto de temporizador. Un subproceso de controlador puede llamar a una rutina como KeWaitForSingleObject o KeWaitForMultipleObjects para esperar a que expire el temporizador. Cuando expira el temporizador, se señala el objeto de temporizador.

Para obtener más información, vea ExXxxTimer Routines and EX_TIMER Objects.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.1.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library Ntoskrnl.lib
IRQL <= DISPATCH_LEVEL

Consulte también

EX_TIMER

ExCancelTimer

ExDeleteTimer

ExSetTimer

ExTimerCallback