Compartir a través de


estructura WDF_TIMER_CONFIG (wdftimer.h)

[Se aplica a KMDF y UMDF]

La estructura WDF_TIMER_CONFIG contiene información de configuración para un objeto de temporizador de marco.

Sintaxis

typedef struct _WDF_TIMER_CONFIG {
  ULONG         Size;
  PFN_WDF_TIMER EvtTimerFunc;
  ULONG         Period;
  BOOLEAN       AutomaticSerialization;
  ULONG         TolerableDelay;
  BOOLEAN       UseHighResolutionTimer;
} WDF_TIMER_CONFIG, *PWDF_TIMER_CONFIG;

Miembros

Size

Tamaño, en bytes, de esta estructura.

EvtTimerFunc

Puntero a una función de devolución de llamada EvtTimerFunc proporcionada por el controlador o NULL.

Period

Un período de tiempo, en milisegundos. El marco llama repetidamente a la función de devolución de llamada EvtTimerFunc del controlador, siempre que transcurre el número especificado de milisegundos. Si este valor es cero, el marco no llama repetidamente a la función de devolución de llamada EvtTimerFunc del controlador. En su lugar, llama a la función de devolución de llamada una vez, una vez transcurrido el tiempo duetime del método WdfTimerStart. (El período de tiempo debe ser cero si WdfTimerCreate establece el nivel de ejecución en WdfExecutionLevelPassive). El período de tiempo no puede ser un valor negativo.

AutomaticSerialization

Valor booleano que, si es TRUE, indica que el marco sincronizará la ejecución de la función de devolución de llamada EvtTimerFunc del objeto de temporizador con funciones de devolución de llamada de otros objetos que están debajo del objeto de dispositivo primario del temporizador. Para obtener más información, vea la sección Comentarios que se muestra más adelante. Si es FALSE, el marco no sincroniza la ejecución de la función de devolución de llamada EvtTimerFunc .

TolerableDelay

Especifica una tolerancia, en milisegundos, para el período del temporizador que Period especifica y para el intervalo de tiempo inicial que especifica el valor DueTime del método WdfTimerStart. Para un temporizador periódico, el intervalo de tiempo entre dos expiraciones sucesivas del temporizador estará en el intervalo de (Período - TolerableDelay) a (Period + TolerableDelay). La hora de expiración inicial estará en el intervalo de DueTime a (DueTime + TolerableDelay). El valor TolerableDelay no puede ser negativo.

El miembro TolerableDelay está disponible en la versión 1.9 y versiones posteriores de KMDF.

A partir de Windows 8.1, en un controlador que use como mínimo KMDF 1.13 o UMDF 2.0, puede establecer este miembro en TolerableDelayUnlimited para especificar que el sistema no se debe reactivar como resultado de la expiración del temporizador.

Si UseHighResolutionTimer es WdfTrue, debe establecer TolerableDelay en cero. De lo contrario, WdfTimerCreate devuelve un código de error.

Para obtener más información sobre este miembro, vea la siguiente sección Comentarios.

UseHighResolutionTimer

Solo KMDF

Este miembro está disponible a partir de Windows 8.1 y KMDF versión 1.13.

Valor con tipo WDF_TRI_STATE. Si este valor es WdfTrue, el marco usa un temporizador de alta resolución que tiene una precisión de un milisegundo. Si el valor es WdfFalse o WdfDefault, el marco usa un temporizador estándar que tiene una precisión que coincide con el intervalo de graduación del reloj del sistema, que es de forma predeterminada de 15,6 milisegundos.

Advertencia Si establece UseHighResolutionTimer en WdfTrue, debe llamar a WdfTimerStart con el parámetro DueTime establecido en un valor negativo. De lo contrario, la llamada hace que el sistema se bloquee.
 
Si UseHighResolutionTimer es WdfTrue, debe establecer TolerableDelay en cero. De lo contrario, WdfTimerCreate devuelve un código de error.

Para obtener más información sobre este miembro, vea la siguiente sección Comentarios.

Comentarios

La estructura WDF_TIMER_CONFIG se usa como entrada para el método WdfTimerCreate . Para inicializar una estructura de WDF_TIMER_CONFIG , el controlador debe llamar a WDF_TIMER_CONFIG_INIT o WDF_TIMER_CONFIG_INIT_PERIODIC.

Establecer el miembro AutomaticSerialization de WDF_TIMER_CONFIG en TRUE no tiene ningún efecto si el ámbito de sincronización del objeto primario está establecido en WdfSynchronizationScopeNone.

Si el nivel de ejecución del objeto de dispositivo primario es WdfExecutionLevelPassive, puede establecer el miembro AutomaticSerialization en TRUE solo si el objeto de temporizador representa un temporizador de nivel pasivo.

Si un controlador usa el miembro TolerableDelay , el sistema operativo puede agrupar los tiempos de expiración que están cerca y procesarlos a la vez. Si el sistema operativo puede controlar las expiraciones de varios temporizadores a la vez, puede mantener el equipo en un estado de bajo consumo durante períodos de tiempo más largos para aumentar la duración de la batería.

Si el miembro TolerableDelay es TolerableDelayUnlimited, el sistema no volverá a su estado totalmente activado (S0) para dar servicio al temporizador si se encuentra en un estado de baja potencia (Sx) cuando expire el temporizador. Un controlador puede especificar TolerableDelayUnlimited para aumentar la duración de la batería cuando el temporizador está relacionado con una operación periódica no crítica.

Establecer UseHighResolutionTimer en WdfTrue puede provocar una disminución de la duración de la batería.

Para obtener más información sobre la automaticserialización y la sincronización de las funciones de devolución de llamada del controlador, consulte Técnicas de sincronización para controladores de Framework-Based.

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

Requisitos

Requisito Value
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdftimer.h (incluya Wdf.h)

Consulte también

EvtTimerFunc

WDF_TIMER_CONFIG_INIT

WDF_TIMER_CONFIG_INIT_PERIODIC

WdfTimerCreate

WdfTimerStart