Funzione KeSetTimerEx (wdm.h)
La routine KeSetTimerEx imposta l'intervallo assoluto o relativo in cui un oggetto timer deve essere impostato su uno stato segnalato, fornisce facoltativamente un CustomTimerDpc routine da eseguire alla scadenza di tale intervallo e, facoltativamente, fornisce un intervallo ricorrente per il timer.
Sintassi
BOOLEAN KeSetTimerEx(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in] LONG Period,
[in, optional] PKDPC Dpc
);
Parametri
[in, out] Timer
Puntatore a un oggetto timer inizializzato con KeInitializeTimer o KeInitializeTimerEx.
[in] DueTime
Specifica l'ora assoluta o relativa in cui il timer deve scadere. Se il valore del parametro DueTime è negativo, l'ora di scadenza è relativa all'ora di sistema corrente. In caso contrario, l'ora di scadenza è assoluta. L'ora di scadenza è espressa in unità di tempo di sistema (intervalli di 100 nanosecondi). I tempi di scadenza assoluti tengono traccia delle modifiche apportate all'ora di sistema; le ore di scadenza relative non sono interessate dalle modifiche all'ora di sistema.
[in] Period
Specifica un intervallo ricorrente facoltativo per il timer in millisecondi. Deve essere un valore maggiore o uguale a zero. Se il valore di questo parametro è zero, il timer è un timer nonperiodico che non si accoda automaticamente.
[in, optional] Dpc
Puntatore a un oggetto DPC inizializzato da KeInitializeDpc. Questo parametro è facoltativo.
Valore restituito
Se l'oggetto timer era già presente nella coda del timer di sistema, KeSetTimerEx restituisce TRUE.
Osservazioni
La routine KeSetTimerEx esegue le operazioni seguenti:
Calcola l'ora di scadenza.
Imposta il timer su uno stato non segnalato.
Imposta l'intervallo ricorrente per il timer, se specificato.
Inserisce l'oggetto timer nella coda del timer di sistema.
Se l'oggetto timer era già presente nella coda timer, viene annullato in modo implicito prima di essere impostato sulla nuova ora di scadenza. Una chiamata a KeSetTimerEx prima della DueTime specificata in precedenza annulla sia il timer che la chiamata al Dpc, se presente, associata alla chiamata precedente.
Le ore di scadenza vengono misurate in relazione all'orologio di sistema e l'accuratezza con cui il sistema operativo può rilevare quando scade un timer è limitato dalla granularità dell'orologio di sistema. Per altre informazioni, vedere accuratezza timer.
Se viene specificato il parametro Dpc, all'oggetto timer viene associato un oggetto DPC. Quando il timer scade, l'oggetto timer viene rimosso dalla coda del timer di sistema e viene impostato su uno stato segnalato. Se un oggetto DPC è stato associato al timer quando è stato impostato, l'oggetto DPC viene inserito nella coda DPC di sistema da eseguire non appena le condizioni consentono la scadenza dell'intervallo timer.
Una routine DPC non può deallocare un timer periodico. Una routine DPC può deallocare un timer nonperiodico.
Si noti che un timer periodico viene riavviato automaticamente non appena scade. Pertanto, in un computer multiprocessore, il DPC per un timer periodico può essere eseguito contemporaneamente su due processori.
È possibile accodare una sola istanza di un determinato oggetto DPC in qualsiasi momento. Per evitare potenziali race condition, il DPC passato a KeSetTimerEx non deve essere passato a KeInsertQueueDpc.
I driver devono annullare tutti i timer attivi nelle routine Scarica. Usare KeCancelTimer per annullare i timer.
Per altre informazioni sugli oggetti timer, vedere oggetti timer e controller di dominio.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 2000. |
piattaforma di destinazione | Universale |
intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
regole di conformità DDI | HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm) |