Funzione ExAllocateTimer (wdm.h)

La routine ExAllocateTimer alloca e inizializza un oggetto timer.

Sintassi

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

Parametri

[in, optional] Callback

Puntatore a una routine di callback exTimerCallback implementata dal driver. Il sistema operativo chiama questa routine alla scadenza del timer. Questo parametro è facoltativo e può essere NULL se non è necessaria alcuna routine di callback.

[in, optional] CallbackContext

Valore di contesto per la routine di callback a cui fa riferimento il parametro Callback . Il sistema operativo passa questo valore come parametro alla routine di callback ExTimerCallback , se specificato. Questo parametro è in genere un puntatore a una struttura definita dal chiamante che contiene informazioni sul contesto usate dalla routine di callback. Questo parametro è facoltativo e può essere impostato su NULL se non sono necessarie informazioni di contesto.

[in] Attributes

Attributi timer. Impostare questo parametro su zero o sul bit-OR di uno o più bit del flag timer seguente.

Flag timer bit Descrizione
EX_TIMER_HIGH_RESOLUTION Timer ad alta risoluzione. Rendere il timer più preciso usando un orologio a risoluzione superiore per guidare il timer.
EX_TIMER_NO_WAKE Timer di riattivazione senza riattivazione. Effettuare il ritardo del timer svegliando il processore alla scadenza fino alla scadenza del timer e la relativa tolleranza di ritardo viene superata.
EX_TIMER_NOTIFICATION Timer di notifica. Rendere il timer un timer di notifica anziché un timer di sincronizzazione. Se questo flag non è impostato, il timer è un timer di sincronizzazione.
 

Il bit EX_TIMER_NOTIFICATION flag può essere impostato indipendentemente da quali altri bit di flag sono impostati.

I bit di EX_TIMER_HIGH_RESOLUTION e EX_TIMER_NO_WAKE flag si escludono a vicenda. Se il chiamante imposta entrambi i bit di flag, il bug di routine verifica.

Per altre informazioni sugli attributi timer, vedere Osservazioni.

Valore restituito

Questa routine restituisce un puntatore a una struttura EX_TIMER , se la chiamata ha esito positivo. Questa struttura è l'oggetto timer allocato e inizializzato dalla routine. Se la chiamata ha esito negativo, la routine restituisce NULL.

Commenti

Questa routine restituisce un puntatore al nuovo oggetto timer. Per usare il timer, il driver chiamante fornisce questo puntatore nelle chiamate successive alle routine ExSetTimer, ExCancelTimer e ExDeleteTimer . Se il driver fornisce un puntatore a una routine di callback exTimerCallback come parametro di input per la routine ExAllocateTimer , il sistema operativo passa questo oggetto timer come parametro di input alla routine ExTimerCallback .

Un timer può essere un timer di notifica o un timer di sincronizzazione. Quando viene segnalato un timer di notifica, tutti i thread in attesa hanno la loro attesa soddisfatta. Lo stato di questo timer rimane segnalato fino a quando non viene reimpostato in modo esplicito. Quando scade un timer di sincronizzazione, lo stato viene impostato su segnalato fino a quando non viene rilasciato un singolo thread in attesa. Il timer viene quindi reimpostato sullo stato non segnalato.

Se il bit di EX_TIMER_HIGH_RESOLUTION flag è impostato in Attributi, il sistema operativo aumenta la risoluzione dell'orologio di sistema, in modo che i tempi in cui il timer scada più precisamente corrispondano ai tempi di scadenza nominale specificati nei parametri DueTime e Period alla routine ExSetTimer . Per altre informazioni, vedere Timer ad alta risoluzione.

Se il bit del flag di EX_TIMER_NO_WAKE è impostato in Attributi, il timer evita di svegliare inutilmente il processore da uno stato a bassa potenza. Per altre informazioni, vedere Timer di riattivazione.

ExAllocateTimer alloca l'archiviazione per l'oggetto timer. Quando questo oggetto non è più necessario, il chiamante è responsabile della liberazione di questo oggetto chiamando la routine ExDeleteTimer .

Il parametro Callback è facoltativo. Un driver che non fornisce una routine ExTimerCallback può invece avviare un'operazione di attesa sull'oggetto timer. Un thread driver può chiamare una routine come KeWaitForSingleObject o KeWaitForMultipleObjects per attendere la scadenza del timer. Al termine del timer, l'oggetto timer viene segnalato.

Per altre informazioni, vedere Routine exXxxTimer e oggetti EX_TIMER.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.1.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria Ntoskrnl.lib
IRQL <= DISPATCH_LEVEL

Vedi anche

EX_TIMER

ExCancelTimer

ExDeleteTimer

ExSetTimer

ExTimerCallback