Condividi tramite


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)

Vedere anche

KeInitializeTimer

KeReadStateTimer

KeSetTimer