Partilhar via


estrutura WDF_TIMER_CONFIG (wdftimer.h)

[Aplica-se a KMDF e UMDF]

A estrutura WDF_TIMER_CONFIG contém informações de configuração para um objeto de temporizador de estrutura.

Sintaxe

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;

Members

Size

O tamanho, em bytes, dessa estrutura.

EvtTimerFunc

Um ponteiro para uma função de retorno de chamada EvtTimerFunc fornecida pelo driver ou NULL.

Period

Um período de tempo, em milissegundos. A estrutura chama a função de retorno de chamada EvtTimerFunc do driver repetidamente, sempre que o número especificado de milissegundos é decorrido. Se esse valor for zero, a estrutura não chamará a função de retorno de chamada EvtTimerFunc do driver repetidamente. Em vez disso, ele chama a função de retorno de chamada uma vez, depois que o DueTime do método WdfTimerStart tiver decorrido. (O período de tempo deve ser zero se WdfTimerCreate definir o nível de execução como WdfExecutionLevelPassive.) O período de tempo não pode ser um valor negativo.

AutomaticSerialization

Um valor booliano que, se VERDADEIRO, indica que a estrutura sincronizará a execução da função de retorno de chamada EvtTimerFunc do objeto timer com funções de retorno de chamada de outros objetos que estão abaixo do objeto de dispositivo pai do temporizador. Para obter mais informações, consulte a seção Comentários a seguir. Se FALSE, a estrutura não sincroniza a execução da função de retorno de chamada EvtTimerFunc .

TolerableDelay

Especifica uma tolerância, em milissegundos, para o período de temporizador especificado pelo Período e pelo intervalo de tempo inicial especificado pelo DueTime do método WdfTimerStart. Para um temporizador periódico, o intervalo de tempo entre duas expirações de temporizador sucessivas estará no intervalo de (Period - TolerableDelay) a (Period + TolerableDelay). O tempo de expiração inicial estará no intervalo de DueTime a (DueTime + TolerableDelay). O valor TolerableDelay não pode ser negativo.

O membro TolerableDelay está disponível na versão 1.9 e versões posteriores do KMDF.

Em um driver usando KMDF 1.13 ou UMDF 2.0, você pode definir esse membro como TolerableDelayUnlimited para especificar que o sistema não deve ser acordado como resultado da expiração desse temporizador.

Se UseHighResolutionTimer for WdfTrue, você deverá definir TolerableDelay como zero. Caso contrário, WdfTimerCreate retornará um código de falha.

Para obter mais informações sobre esse membro, consulte a seção Comentários a seguir.

UseHighResolutionTimer

Somente KMDF

Esse membro está disponível a partir do KMDF versão 1.13.

Um valor tipo WDF_TRI_STATE. Se esse valor for WdfTrue, a estrutura usará um temporizador de alta resolução que tem uma precisão de um milissegundo. Se o valor for WdfFalse ou WdfDefault, a estrutura usará um temporizador padrão que tenha uma precisão correspondente ao intervalo de tique do relógio do sistema, que é, por padrão, 15,6 milissegundos.

Aviso

Se você definir UseHighResolutionTimer como WdfTrue, deverá chamar WdfTimerStart com o parâmetro DueTime definido como um valor negativo. Caso contrário, a chamada fará com que o sistema falhe.

Se UseHighResolutionTimer for WdfTrue, você deverá definir TolerableDelay como zero. Caso contrário, WdfTimerCreate retornará um código de falha.

Observações

A estrutura WDF_TIMER_CONFIG é usada como entrada para o método WdfTimerCreate . Para inicializar uma estrutura de WDF_TIMER_CONFIG , o driver deve chamar WDF_TIMER_CONFIG_INIT ou WDF_TIMER_CONFIG_INIT_PERIODIC.

Definir o membro de AutomaticSerialization de WDF_TIMER_CONFIG como TRUE não terá efeito se o escopo de sincronização do objeto pai estiver definido como WdfSynchronizationScopeNone.

Se o nível de execução do objeto de dispositivo pai for WdfExecutionLevelPassive, você poderá definir o membro automaticSerialization como TRUE somente se o objeto de temporizador representar um temporizador de nível passivo.

Se um driver usar o membro TolerableDelay , o sistema operacional poderá agrupar tempos de expiração que são próximos e processá-los de uma só vez. Se o sistema operacional puder lidar com as expirações de vários temporizadores ao mesmo tempo, ele poderá potencialmente manter o computador em um estado de baixa energia por períodos mais longos de tempo para aumentar a vida útil da bateria.

Se o membro TolerableDelay for TolerableDelayUnlimited, o sistema não retornará ao seu estado totalmente ativado (S0) para atender ao temporizador se ele estiver em um estado de baixa potência (Sx) quando o temporizador expirar. Um driver pode especificar TolerableDelayUnlimited para aumentar a vida útil da bateria quando o temporizador estiver relacionado a uma operação periódica não crítica.

Definir UseHighResolutionTimer como WdfTrue habilitará um objeto de temporizador de alta resolução em vez de um temporizador regular e poderá resultar em uma diminuição da vida útil da bateria. Use isso somente se uma resolução mais alta for realmente necessária. Para obter mais informações e alternativas, consulte o artigo dedicado sobre temporizadores de alta resolução.

Para obter mais informações sobre a AutomaticSerialization e a sincronização de funções de retorno de chamada do driver, consulte Técnicas de Sincronização para drivers de Framework-Based.

Para obter mais informações sobre objetos de temporizador de estrutura, consulte Using Timers.

Requirements

Requirement Value
Versão mínima do KMDF 1,0
Versão mínima do UMDF 2.0
Header wdftimer.h (inclua Wdf.h)

Consulte também