WdfTimerCreate-Funktion (wdftimer.h)
[Gilt für KMDF und UMDF]
Die WdfTimerCreate-Methode erstellt ein Framework-Timerobjekt.
NTSTATUS WdfTimerCreate(
[in] PWDF_TIMER_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFTIMER *Timer
);
[in] Config
Ein Zeiger auf eine WDF_TIMER_CONFIG Struktur.
[in] Attributes
Ein Zeiger auf eine WDF_OBJECT_ATTRIBUTES Struktur, die Objektattribute für das neue Timerobjekt enthält.
[out] Timer
Ein Zeiger auf eine Position, die ein Handle für das neue Framework-Timerobjekt empfängt.
WdfTimerCreate gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Der parameter Attributes war NULL, oder das ParentObject Member der WDF_OBJECT_ATTRIBUTES Struktur, die Attributes angibt, war NULL-. |
|
Es wurde ein ungültiger Parameter angegeben. |
|
Das ParentObject Member der WDF_OBJECT_ATTRIBUTES-Struktur hat nicht auf ein Framework-Geräteobjekt oder auf ein Objekt verwiesen, dessen Übergeordnete Kette zu einem Framework-Geräteobjekt führt. |
|
Nicht genügend Arbeitsspeicher vorhanden. |
|
Die AutomaticSerialization- Member der WDF_TIMER_CONFIG-Struktur wurde auf TRUEfestgelegt, die Ausführungsebene des übergeordneten Geräteobjekts wurde jedoch auf WdfExecutionLevelPassivefestgelegt. |
Eine Liste mit anderen Rückgabewerten, die von der WdfTimerCreate Methode möglicherweise zurückgegeben werden, finden Sie unter Framework Object Creation Errors.
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Wenn ihr Treiber WdfTimerCreateaufruft, muss er eine WDF_OBJECT_ATTRIBUTES Struktur bereitstellen und ein übergeordnetes Objekt im ParentObject-Element der Struktur angeben Member. Das übergeordnete Objekt kann ein Framework-Geräteobjekt oder ein objekt sein, dessen Übergeordnete Kette zu einem Framework-Geräteobjekt führt. Das Framework löscht das Timerobjekt, wenn es das Geräteobjekt löscht.
Nach dem Erstellen eines Timerobjekts muss der Treiber WdfTimerStart- aufrufen, um die Zeitgeberuhr zu starten, unabhängig davon, ob der Timer regelmäßig ist oder nicht.
Wenn Ihr Treiber EvtCleanupCallback oder EvtDestroyCallback- Rückruffunktionen für das Framework-Timerobjekt bereitstellt, beachten Sie, dass das Framework diese Rückruffunktionen bei IRQL = PASSIVE_LEVEL aufruft.
Weitere Informationen zu Framework-Timerobjekten finden Sie unter Using Timers.
Im folgenden Codebeispiel wird eine WDF_TIMER_CONFIG Struktur und eine WDF_OBJECT_ATTRIBUTES Struktur initialisiert und anschließend WdfTimerCreateaufgerufen.
WDF_TIMER_CONFIG timerConfig;
WDF_OBJECT_ATTRIBUTES timerAttributes;
WDFTIMER timerHandle;
NTSTATUS status;
WDF_TIMER_CONFIG_INIT(
&timerConfig,
MyEvtTimerFunc
);
timerConfig.AutomaticSerialization = TRUE;
WDF_OBJECT_ATTRIBUTES_INIT(&timerAttributes);
timerAttributes.ParentObject = DeviceHandle;
status = WdfTimerCreate(
&timerConfig,
&timerAttributes,
&timerHandle
);
if (!NT_SUCCESS(status)) {
return status;
}
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) |