Funzione KeCancelTimer (wdm.h)
Il KeCancelTimer routine rimuove dalla coda un oggetto timer prima dell'intervallo timer, se impostato, scade.
Sintassi
BOOLEAN KeCancelTimer(
[in, out] PKTIMER unnamedParam1
);
Parametri
[in, out] unnamedParam1
Puntatore a un oggetto timer inizializzato, per il quale il chiamante fornisce la risorsa di archiviazione.
Valore restituito
Se l'oggetto timer specificato si trova nella coda del timer di sistema, KeCancelTimer restituisce TRUE.
Osservazioni
Se l'oggetto timer è attualmente presente nella coda del timer di sistema, viene rimosso dalla coda. Se un oggetto DPC è associato al timer, anche questo viene annullato. In caso contrario, non viene eseguita alcuna operazione.
La routine restituisce TRUE se il timer è ancora nella coda del timer. Un timer nonperiodico viene rimosso dalla coda di sistema non appena scade. Pertanto, per i timer nonperiodici, KeCancelTimer restituisce FALSE se il timer DPC è stato accodato. I timer periodici sono sempre nella coda timer, quindi KeCancelTimer restituisce sempre true per i timer periodici.
Si noti che un DPC già in esecuzione viene eseguito fino al completamento. Il driver deve assicurarsi che il DPC sia stato completato prima di liberare tutte le risorse usate dal DPC. Per un timer nonperiodico, è possibile usare primitive di sincronizzazione, ad esempio oggetti evento, per eseguire la sincronizzazione tra il driver e il DPC. Il driver può controllare il codice restituito di KeCancelTimer per determinare se il DPC è in esecuzione. In tal caso, il DPC può segnalare l'evento prima dell'uscita e il driver può attendere che l'evento venga reimpostato sullo stato non segnalato.
Poiché per i timer periodici KeCancelTimer restituisce sempre TRUE, i driver devono usare una tecnica diversa per attendere il completamento del DPC. Utilizzare la routine KeFlushQueuedDpcs per bloccare fino all'esecuzione del DPC.
Non è necessario sincronizzare i driver per i dati archiviati nelle variabili globali o nelle estensioni degli oggetti driver. Il sistema chiama automaticamente KeFlushQueuedDpcs prima di deallocare una di queste aree.
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) |