Freigeben über


WdfTimerCreate-Funktion (wdftimer.h)

[Gilt für KMDF und UMDF]

Die WdfTimerCreate-Methode erstellt ein Framework-Timerobjekt.

Syntax

NTSTATUS WdfTimerCreate(
  [in]  PWDF_TIMER_CONFIG      Config,
  [in]  PWDF_OBJECT_ATTRIBUTES Attributes,
  [out] WDFTIMER               *Timer
);

Parameter

[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 einen Speicherort, der ein Handle für das neue Framework-Timerobjekt empfängt.

Rückgabewert

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
STATUS_WDF_PARENT_NOT_SPECIFIED
Der Attributes-Parameter war NULL, oder das ParentObject-Element der WDF_OBJECT_ATTRIBUTES-Struktur , die Attributes angibt, war NULL.
STATUS_INVALID_PARAMETER
Ein ungültiger Parameter wurde angegeben.
STATUS_INVALID_DEVICE_REQUEST
Das ParentObject-Element der WDF_OBJECT_ATTRIBUTES-Struktur hat nicht auf ein Framework-Geräteobjekt oder ein Objekt verwiesen, dessen Kette von übergeordneten Elementen zu einem Framework-Geräteobjekt führt.
STATUS_INSUFFICIENT_RESOURCES
Es war nicht genügend Arbeitsspeicher vorhanden.
STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
Der AutomaticSerialization-Member der WDF_TIMER_CONFIG-Struktur wurde auf TRUE festgelegt, die Ausführungsebene des übergeordneten Geräteobjekts wurde jedoch auf WdfExecutionLevelPassive festgelegt.
 

Eine Liste mit anderen Rückgabewerten, die von der WdfTimerCreate-Methode möglicherweise zurückgegeben werden, finden Sie unter Fehler bei der Erstellung von Frameworkobjekten.

Diese Methode gibt möglicherweise auch andere NTSTATUS-Werte zurück.

Hinweise

Wenn Der Treiber WdfTimerCreate aufruft, muss er eine WDF_OBJECT_ATTRIBUTES Struktur bereitstellen und ein übergeordnetes Objekt im ParentObject-Element der Struktur angeben. Das übergeordnete Objekt kann ein Framework-Geräteobjekt oder ein beliebiges Objekt sein, dessen Kette von übergeordneten Elementen zu einem Framework-Geräteobjekt führt. Das Framework löscht das Timerobjekt, wenn es das Geräteobjekt löscht.

Nach dem Erstellen eines Zeitgeberobjekts muss der Treiber WdfTimerStart aufrufen, um die Uhr des Zeitgebers zu starten, unabhängig davon, ob der Timer periodisch 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 unter IRQL = PASSIVE_LEVEL aufruft.

Weitere Informationen zu Framework-Timerobjekten finden Sie unter Verwenden von Timern.

Beispiele

Im folgenden Codebeispiel werden eine WDF_TIMER_CONFIG-Struktur und eine WDF_OBJECT_ATTRIBUTES-Struktur initialisiert und anschließend WdfTimerCreate aufgerufen.

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;
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdftimer.h (include Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WDF_TIMER_CONFIG

WDF_TIMER_CONFIG_INIT

WdfTimerStart