Funzione KeSetTimer (wdm.h)
La routine KeSetTimer imposta l'intervallo assoluto o relativo in cui un oggetto timer deve essere impostato su uno stato segnalato e, facoltativamente, fornisce una routine CustomTimerDpc da eseguire alla scadenza di tale intervallo.
Sintassi
BOOLEAN KeSetTimer(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[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, 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, KeSetTimer restituisce TRUE.
Osservazioni
La routine KeSetTimer esegue le operazioni seguenti:
Calcola l'ora di scadenza.
Imposta il timer su uno stato non segnalato.
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 KeSetTimer prima della specificata in precedenza annulla sia il timer che la chiamata al Dpc, se presente, associata alla chiamata precedente.
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 il relativo stato viene impostato su 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.
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.
È possibile accodare una sola istanza di un determinato oggetto DPC in qualsiasi momento. Per evitare potenziali race condition, il DPC passato a KeSetTimer non deve essere passato a KeInsertQueueDpc.
I driver devono annullare tutti i timer attivi nelle routine Scarica. Usare KeCancelTimer per annullare i timer.
I chiamanti di KeSetTimer possono specificare una scadenza per un timer. Per impostare un timer ricorrente, usare KeSetTimerEx.
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) |