Freigeben über


KeSetTimer-Funktion (wdm.h)

Die KeSetTimer-Routine legt das absolute oder relative Intervall fest, in dem ein Timerobjekt auf einen signalierten Zustand festgelegt werden soll, und stellt optional eine CustomTimerDpc-Routine bereit, die ausgeführt werden soll, wenn dieses Intervall abläuft.

Syntax

BOOLEAN KeSetTimer(
  [in, out]      PKTIMER       Timer,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] PKDPC         Dpc
);

Parameter

[in, out] Timer

Zeiger auf ein Timerobjekt, das mit KeInitializeTimer oder KeInitializeTimerEx initialisiert wurde.

[in] DueTime

Gibt die absolute oder relative Zeit an, zu der der Timer abläuft. Wenn der Wert des DueTime-Parameters negativ ist, ist die Ablaufzeit relativ zur aktuellen Systemzeit. Andernfalls ist die Ablaufzeit absolut. Die Ablaufzeit wird in Systemzeiteinheiten (100-Nanosekunden-Intervalle) ausgedrückt. Absolute Ablaufzeiten verfolgen alle Änderungen in der Systemzeit; relative Ablaufzeiten werden von Systemzeitänderungen nicht beeinflusst.

[in, optional] Dpc

Zeiger auf ein DPC-Objekt, das von KeInitializeDpc initialisiert wurde. Dieser Parameter ist optional.

Rückgabewert

Wenn sich das Timerobjekt bereits in der Systemtimerwarteschlange befand, gibt KeSetTimerTRUE zurück.

Hinweise

Die KeSetTimer-Routine führt Folgendes aus:

  • Berechnet die Ablaufzeit.

  • Legt den Timer auf einen nicht signalisierenden Zustand fest.

  • Fügt das Timerobjekt in die Systemtimerwarteschlange ein.

Wenn sich das Timerobjekt bereits in der Zeitgeberwarteschlange befand, wird es implizit abgebrochen, bevor es auf die neue Ablaufzeit festgelegt wird. Ein Aufruf von KeSetTimer , bevor die zuvor angegebene DueTime abgelaufen ist, bricht sowohl den Timer als auch den Aufruf des Dpc ab, sofern vorhanden, der dem vorherigen Aufruf zugeordnet ist.

Wenn der Dpc-Parameter angegeben ist, wird dem Timerobjekt ein DPC-Objekt zugeordnet. Wenn der Timer abläuft, wird das Timerobjekt aus der Systemtimerwarteschlange entfernt, und sein Status wird auf signalisiert festgelegt. Wenn dem Timer beim Festlegen ein DPC-Objekt zugeordnet wurde, wird das DPC-Objekt in die DPC-Systemwarteschlange eingefügt, um ausgeführt zu werden, sobald die Bedingungen nach Ablauf des Zeitgeberintervalls dies zulassen.

Ablaufzeiten werden relativ zur Systemuhr gemessen, und die Genauigkeit, mit der das Betriebssystem erkennen kann, wann ein Timer abläuft, wird durch die Granularität der Systemuhr begrenzt. Weitere Informationen finden Sie unter Timergenauigkeit.

Nur eine Instanziierung eines bestimmten DPC-Objekts kann zu einem bestimmten Zeitpunkt in die Warteschlange eingereiht werden. Um potenzielle Racebedingungen zu vermeiden, sollte der an KeSetTimer übergebene DPC nicht an KeInsertQueueDpc übergeben werden.

Treiber müssen alle aktiven Timer in ihren Entladeroutinen abbrechen. Verwenden Sie KeCancelTimer , um alle Zeitgeber abzubrechen.

Aufrufer von KeSetTimer können eine Ablaufzeit für einen Timer angeben. Verwenden Sie KeSetTimerEx, um einen wiederkehrenden Timer festzulegen.

Weitere Informationen zu Timerobjekten finden Sie unter Timerobjekte und DPCs.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Weitere Informationen

KeCancelTimer

KeInitializeDpc

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeSetTimerEx

KeWaitForMultipleObjects