Freigeben über


KeSetTimer-Funktion (wdm.h)

Die KeSetTimer- Routine legt das absolute oder relative Intervall fest, bei dem ein Timerobjekt auf einen signalierten Zustand festgelegt werden soll und optional eine CustomTimerDpc Routine bereitstellt, 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 KeInitializeTimerExinitialisiert wurde.

[in] DueTime

Gibt die absolute oder relative Uhrzeit 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 ausgedrückt (100-Nanosekunden-Intervalle). Absolute Ablaufzeiten verfolgen alle Änderungen der Systemzeit; Relative Ablaufzeiten sind von Systemzeitänderungen nicht betroffen.

[in, optional] Dpc

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

Rückgabewert

Wenn sich das Timerobjekt bereits in der Systemzeitgeberwarteschlange befand, gibt KeSetTimer-TRUEzurück.

Bemerkungen

Die KeSetTimer- Routine führt folgende Aktionen aus:

  • Berechnet die Ablaufzeit.

  • Legt den Timer auf einen nicht signalisierten Zustand fest.

  • Fügt das Timerobjekt in die Systemzeitgeberwarteschlange 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 der zuvor angegebene DueTime- abgelaufen ist, wird sowohl der Timer als auch der Aufruf des Dpc( falls vorhanden ) abgebrochen, 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 Systemzeitgeberwarteschlange entfernt, und sein Zustand wird auf signalisiert festgelegt. Wenn ein DPC-Objekt dem Timer zugeordnet war, als er festgelegt wurde, wird das DPC-Objekt in die DPC-Systemwarteschlange eingefügt, sobald Bedingungen nach Ablauf des Zeitgeberintervalls zulässig sind.

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

Es kann jeweils nur eine Instanziierung eines bestimmten DPC-Objekts in die Warteschlange gestellt werden. Um potenzielle Rennbedingungen zu vermeiden, sollte der DPC an KeSetTimer nicht an KeInsertQueueDpcübergeben werden.

Treiber müssen alle aktiven Timer in ihren Unload Routinen abbrechen. Verwenden Sie KeCancelTimer-, um Timer abzubrechen.

Aufrufer von KeSetTimer- können eine Ablaufzeit für einen Timer angeben. Verwenden Sie zum Festlegen eines Wiederkehrenden Timers KeSetTimerEx.

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

KeCancelTimer-

KeInitializeDpc

KeInitializeTimer-

KeInitializeTimerEx-

KeReadStateTimer-

KeSetTimerEx

KeWaitForMultipleObjects