Funzione WdfTimerCreate (wdftimer.h)
[Si applica a KMDF e UMDF]
Il metodo WdfTimerCreate crea un oggetto timer del framework.
Sintassi
NTSTATUS WdfTimerCreate(
[in] PWDF_TIMER_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFTIMER *Timer
);
Parametri
[in] Config
Puntatore a una struttura WDF_TIMER_CONFIG.
[in] Attributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che contiene gli attributi dell'oggetto per il nuovo oggetto timer.
[out] Timer
Puntatore a una posizione che riceve un handle per il nuovo oggetto timer del framework.
Valore restituito
WdfTimerCreate restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
Il parametro Attributes è NULLo il membro ParentObject della struttura WDF_OBJECT_ATTRIBUTES che Attributes specifica che è stato NULL. |
|
È stato specificato un parametro non valido. |
|
Il ParentObject membro della struttura WDF_OBJECT_ATTRIBUTES non fa riferimento a un oggetto dispositivo framework o a un oggetto la cui catena di elementi padre conduce a un oggetto dispositivo framework. |
|
Memoria insufficiente. |
|
Il membro automaticSerialization della struttura WDF_TIMER_CONFIG è stato impostato su TRUE, ma il livello di esecuzione dell'oggetto dispositivo padre è stato impostato su WdfExecutionLevelPassive. |
Per un elenco di altri valori restituiti dal metodo WdfTimerCreate, vedere Framework Object Creation Errors.
Questo metodo può anche restituire altri valori NTSTATUS .
Osservazioni
Quando il driver chiama WdfTimerCreate, deve fornire una struttura WDF_OBJECT_ATTRIBUTES e deve specificare un oggetto padre nel membro ParentObject della struttura. L'oggetto padre può essere un oggetto dispositivo framework o qualsiasi oggetto la cui catena di elementi padre porta a un oggetto dispositivo framework. Il framework eliminerà l'oggetto timer quando elimina l'oggetto dispositivo.
Dopo aver creato un oggetto timer, il driver deve chiamare WdfTimerStart per avviare l'orologio del timer indipendentemente dal fatto che il timer sia periodico o meno.
Se il driver fornisce EvtCleanupCallback o EvtDestroyCallback funzioni di callback per l'oggetto timer del framework, si noti che il framework chiama queste funzioni di callback in IRQL = PASSIVE_LEVEL.
Per altre informazioni sugli oggetti timer del framework, vedere Using Timers.
Esempi
Nell'esempio di codice seguente viene inizializzata una struttura WDF_TIMER_CONFIG e una struttura WDF_OBJECT_ATTRIBUTES e quindi viene chiamata WdfTimerCreate.
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;
}
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | wdftimer.h (include Wdf.h) |
libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |