WdfTimerStart-Funktion (wdftimer.h)
[Gilt für KMDF und UMDF]
Die WdfTimerStart--Methode startet die Uhr eines Timers.
Syntax
BOOLEAN WdfTimerStart(
[in] WDFTIMER Timer,
[in] LONGLONG DueTime
);
Parameter
[in] Timer
Ein Handle für ein Framework-Timerobjekt, das durch Aufrufen WdfTimerCreateabgerufen wurde.
[in] DueTime
Ein Zeitraum in Systemzeiteinheiten (100-Nanosekunden-Intervalle). Das Framework ruft die EvtTimerFunc Rückruffunktion des Treibers auf, wenn der angegebene Zeitraum verstrichen ist. Der Zeitraumwert kann wie folgt negativ oder positiv sein:
- Wenn der Wert negativ ist, ist der Zeitraum relativ zur aktuellen Systemzeit.
- Wenn der Wert positiv ist, gibt der Zeitraum eine absolute Zeit an (die tatsächlich relativ zum 1. Januar 1601 ist).
Warnung
Wenn Sie den UseHighResolutionTimer Member von WDF_TIMER_CONFIG auf WdfTrue-festlegen, müssen Sie WdfTimerStart- aufrufen, wobei der parameter DueTime auf einen negativen Wert festgelegt ist. Andernfalls stürzt das System ab.
Relative Zeiten sind nicht von Änderungen an der Systemzeit betroffen, die innerhalb des angegebenen Zeitraums auftreten können. Absolute Zeiten spiegeln Systemzeitänderungen wider.
Das Framework bietet Zeitkonvertierungsfunktionen, die Zeitwerte in Systemzeiteinheiten konvertieren.
Rückgabewert
WdfTimerStart- gibt TRUE zurück, wenn sich das Timerobjekt in der Zeitgeberwarteschlange des Systems befand. Andernfalls gibt diese Methode FALSE-zurück. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Bemerkungen
Treiber müssen immer WdfTimerStart- aufrufen, um einen Timer nach dem Erstellen zu starten, unabhängig davon, ob der Timer ein periodischer Timer ist oder nicht.
Nachdem ein Treiber WdfTimerStart-aufgerufen hat, ruft das Framework die EvtTimerFunc- Rückruffunktion des Treibers auf, wenn die Für den DueTime Parameter angegebene Uhrzeit verstrichen ist. Nach diesem ersten Aufruf ruft das Framework die Rückruffunktion jedes Mal auf, wenn der Zeitraum, der durch den Zeitraum angegeben wird, Mitglied der WDF_TIMER_CONFIG Struktur des Treibers verstrichen ist.
Der Ablauf des Timers hängt letztendlich von der Granularität der Systemuhr ab. Der für DueTime- angegebene Wert garantiert, dass das Framework die EvtTimerFunc Rückruffunktion des Treibers für oder nach dem angegebenen DueTime-aufruft. WdfTimerStart- kann jedoch nicht die Granularität der Systemuhr außer Kraft setzen, unabhängig davon, welcher Wert für DueTime-angegeben ist.
Wenn ein Treiber WdfTimerStart-aufruft, wird das Timerobjekt der Warteschlange des Systems mit Zeitgeberobjekten hinzugefügt. Wenn der Timer kein periodischer Timer ist, entfernt das System das Timerobjekt aus der Warteschlange, nachdem die "Fälligkeitszeit" des Timers abgelaufen ist. Wenn der Timer ein periodischer Timer ist, verbleibt das Timerobjekt in der Warteschlange, bis der Treiber WdfTimerStop-aufruft.
Ein Treiber ruft möglicherweise WdfTimerStart- aus seiner EvtTimerFunc- Rückruffunktion auf, um einen nicht periodischen Timer neu zu starten, nachdem er abgelaufen ist.
WdfTimerStart- gibt TRUE zurück, wenn der Treiber zuvor WdfTimerStart- aufgerufen hat und das Timerobjekt sich noch in der Warteschlange des Systems befindet, da der Zeitraum nicht abgelaufen ist (oder weil es sich um einen regelmäßigen Timer handelt). Bevor WdfTimerStart-TRUE-zurückgibt, setzt das Betriebssystem den Zeitraum auf den Wert zurück, den der im neuen Aufruf des neuen Aufrufs angegebene Treiber auf WdfTimerStart. Das Framework ruft die EvtTimerFunc Rückruffunktion erst nach Ablauf des neuen Zeitraums auf.
Um die Zeitgeberuhr zu beenden, kann der Treiber WdfTimerStop-aufrufen.
Weitere Informationen zu Framework-Timerobjekten finden Sie unter Using Timers.
Beispiele
Im folgenden Codebeispiel wird ein Timer gestartet. Das Framework ruft die EvtTimerFunc Rückruffunktion nach 10 Millisekunden auf.
BOOLEAN inTimerQueue;
inTimerQueue = WdfTimerStart(
timerHandle,
WDF_REL_TIMEOUT_IN_MS(10)
);
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Minimale KMDF-Version | 1.0 |
Mindest-UMDF-Version | 2.0 |
Header- | wdftimer.h (include Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL- | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |