Freigeben über


KeCancelTimer-Funktion (wdm.h)

Die KeCancelTimer Routine dequeues ein Timerobjekt vor Ablauf des Zeitgeberintervalls, falls festgelegt, ab.

Syntax

BOOLEAN KeCancelTimer(
  [in, out] PKTIMER unnamedParam1
);

Parameter

[in, out] unnamedParam1

Zeiger auf ein initialisiertes Timerobjekt, für das der Aufrufer den Speicher bereitstellt.

Rückgabewert

Wenn sich das angegebene Timerobjekt in der Systemzeitgeberwarteschlange befindet, gibt KeCancelTimerTRUEzurück.

Bemerkungen

Wenn sich das Timerobjekt derzeit in der Systemzeitgeberwarteschlange befindet, wird es aus der Warteschlange entfernt. Wenn ein DPC-Objekt dem Timer zugeordnet ist, wird es ebenfalls abgebrochen. Andernfalls wird kein Vorgang ausgeführt.

Die Routine gibt TRUE zurück, wenn sich der Timer noch in der Zeitgeberwarteschlange befindet. Ein nichtperioischer Timer wird aus der Systemwarteschlange entfernt, sobald er abläuft. Bei nichtperidischen Timern gibt KeCancelTimerFALSE zurück, wenn der Timer-DPC in die Warteschlange gestellt wurde. Periodische Timer befinden sich immer in der Zeitgeberwarteschlange, sodass KeCancelTime r immer TRUE- für periodische Timer zurückgibt.

Beachten Sie, dass ein bereits ausgeführter DPC zum Abschluss ausgeführt wird. Der Treiber muss sicherstellen, dass der DPC abgeschlossen ist, bevor alle vom DPC verwendeten Ressourcen freigegeben werden. Bei einem nichtperiodischen Timer können Sie Synchronisierungsgrundtypen wie Ereignisobjekte verwenden, um zwischen dem Treiber und dem DPC zu synchronisieren. Der Treiber kann den Rückgabecode von KeCancelTimer- überprüfen, um festzustellen, ob der DPC ausgeführt wird. Wenn dies der Fall ist, kann der DPC das Ereignis vor dem Beenden signalisieren, und der Treiber kann warten, bis dieses Ereignis auf den nicht signalisierten Zustand zurückgesetzt wird.

Da bei periodischen Zeitgebern KeCancelTimer immer TRUE-zurückgibt, müssen Treiber eine andere Technik verwenden, um zu warten, bis der DPC abgeschlossen ist. Verwenden Sie die KeFlushQueuedDpcs Routine, um zu blockieren, bis der DPC ausgeführt wird.

Treiber müssen nicht für Daten synchronisiert werden, die in globalen Variablen oder Treiberobjekterweiterungen gespeichert sind. Das System ruft automatisch KeFlushQueuedDpcs auf, bevor eine dieser Regionen abgefragt wird.

Weitere Informationen zu Timerobjekten finden Sie unter timer Objects and DPCs.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Siehe auch

KeInitializeTimer-

KeReadStateTimer-

KeSetTimer-