Función WdfTimerCreate (wdftimer.h)

[Se aplica a KMDF y UMDF]

El método WdfTimerCreate crea un objeto de temporizador de marco.

Sintaxis

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

Parámetros

[in] Config

Puntero a una estructura de WDF_TIMER_CONFIG .

[in] Attributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES que contiene atributos de objeto para el nuevo objeto de temporizador.

[out] Timer

Puntero a una ubicación que recibe un identificador para el nuevo objeto de temporizador del marco.

Valor devuelto

WdfTimerCreate devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_WDF_PARENT_NOT_SPECIFIED
El parámetro Attributes era NULL o el miembro ParentObject de la estructura WDF_OBJECT_ATTRIBUTES que Attributes especifica era NULL.
STATUS_INVALID_PARAMETER
Se especificó un parámetro no válido.
STATUS_INVALID_DEVICE_REQUEST
El miembro ParentObject de la estructura WDF_OBJECT_ATTRIBUTES no hizo referencia a un objeto de dispositivo de marco ni a un objeto cuya cadena de elementos primarios conduce a un objeto de dispositivo de marco.
STATUS_INSUFFICIENT_RESOURCES
No había memoria suficiente.
STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
El miembro AutomaticSerialization de la estructura WDF_TIMER_CONFIG se estableció en TRUE, pero el nivel de ejecución del objeto de dispositivo primario se estableció en WdfExecutionLevelPassive.
 

Para obtener una lista de otros valores devueltos que el método WdfTimerCreate podría devolver, vea Errores de creación de objetos de marco.

Este método también podría devolver otros valores NTSTATUS.

Comentarios

Cuando el controlador llama a WdfTimerCreate, debe proporcionar una estructura de WDF_OBJECT_ATTRIBUTES y debe especificar un objeto primario en el miembro ParentObject de la estructura. El objeto primario puede ser un objeto de dispositivo de marco o cualquier objeto cuya cadena de elementos primarios conduce a un objeto de dispositivo de marco. El marco eliminará el objeto de temporizador cuando elimine el objeto de dispositivo.

Después de crear un objeto de temporizador, el controlador debe llamar a WdfTimerStart para iniciar el reloj del temporizador, independientemente de si el temporizador es periódico o no.

Si el controlador proporciona funciones de devolución de llamada EvtCleanupCallback o EvtDestroyCallback para el objeto del temporizador del marco, tenga en cuenta que el marco llama a estas funciones de devolución de llamada en IRQL = PASSIVE_LEVEL.

Para obtener más información sobre los objetos de temporizador del marco, vea Uso de temporizadores.

Ejemplos

En el ejemplo de código siguiente se inicializa una estructura de WDF_TIMER_CONFIG y una estructura de WDF_OBJECT_ATTRIBUTES y, a continuación, se llama a 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;
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdftimer.h (incluya Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WDF_TIMER_CONFIG

WDF_TIMER_CONFIG_INIT

WdfTimerStart