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 un driver implementato ExTimerCallback routine di callback. 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 punta 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 di contesto utilizzate 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 sull'OR bit per bit di uno o più dei bit del flag timer seguenti.
Bit del flag timer | Descrizione |
---|---|
EX_TIMER_HIGH_RESOLUTION | Timer ad alta risoluzione. Rendere il timer più preciso usando un orologio a risoluzione più alta per guidare il timer. |
EX_TIMER_NO_WAKE | Timer di riattivazione no. Impostare il ritardo del timer per la scadenza del processore fino a quando non viene superata la scadenza del timer e la relativa tolleranza di ritardo. |
EX_TIMER_NOTIFICATION | Timer di notifica. Impostare il timer come timer di notifica anziché un timer di sincronizzazione. Se questo flag non è impostato, il timer è un timer di sincronizzazione. |
Il bit del flag EX_TIMER_NOTIFICATION può essere impostato indipendentemente dagli altri bit di flag impostati.
I bit di flag EX_TIMER_HIGH_RESOLUTION e EX_TIMER_NO_WAKE 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 non riesce, la routine restituisce NULL.
Osservazioni
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 , ExCancelTimere ExDeleteTimer. Se il driver fornisce un puntatore a un ExTimerCallback routine di callback 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 un timer di sincronizzazione scade, il relativo stato viene impostato su segnalato fino al rilascio di un singolo thread in attesa. Il timer viene quindi reimpostato sullo stato non segnalato.
Se il bit del flag EX_TIMER_HIGH_RESOLUTION è impostato in Attributi, il sistema operativo aumenta la risoluzione dell'orologio di sistema, se necessario, in modo che gli orari in cui il timer scada corrispondano più precisamente alle ore di scadenza nominale specificate nel DueTime e parametri period alla routine ExSetTimer. Per altre informazioni, vedere High-Resolution Timer.
Se il bit del flag EX_TIMER_NO_WAKE è impostato in Attributi, il timer evita inutilmente di svegliare il processore da uno stato a basso consumo. Per altre informazioni, vedere No-Wake Timer.
exAllocateTimer alloca lo spazio di 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 un Routine ExTimerCallback può invece avviare un'operazione di attesa sull'oggetto timer. Un thread driver può chiamare una routine come KeWaitForSingleObject o KeWaitForMultipleObjects attendere la scadenza del timer. Quando il timer scade, viene segnalato l'oggetto timer.
Per altre informazioni, vedere routine ExXxxTimer e oggetti EX_TIMER.
Fabbisogno
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 |