Compartir a través de


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 ExTimerCall back implementada por el controlador. El sistema operativo llama a esta rutina cuando expira el temporizador. Este parámetro es opcional y se puede 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 al exTimerCallback rutina de devolución de llamada, 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 de 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 temporizador retrase la activación del 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 establezcan.

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 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 de 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.

Observaciones

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 la ExSetTimer, ExCancelTimery rutinas de ExDeleteTimer. Si el controlador proporciona un puntero a un ExTimerCallback rutina de devolución de llamada como parámetro de entrada a la rutina de 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 satisfecho su espera. 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 la DueTime y Parámetros period a la rutina exSetTimer. Para obtener más información, vea High-Resolution Temporizadores.

Si el bit de marca EX_TIMER_NO_WAKE se establece en Atributos, el temporizador evita innecesariamente despertar al procesador de un estado de baja potencia. Para obtener más información, vea No-Wake Temporizadores.

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. 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 esperar a que expire el temporizador. Cuando expira el temporizador, se señala el objeto del temporizador.

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

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 8.1.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de Ntoskrnl.lib
irQL <= DISPATCH_LEVEL

Consulte también

EX_TIMER

ExCancelTimer

ExDeleteTimer

ExSetTimer

ExTimerCallback