Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[Aplica-se a KMDF e UMDF]
O método WdfTimerStart inicia o relógio de um temporizador.
Sintaxe
BOOLEAN WdfTimerStart(
[in] WDFTIMER Timer,
[in] LONGLONG DueTime
);
Parâmetros
[in] Timer
Um identificador para um objeto de temporizador de estrutura que foi obtido chamando WdfTimerCreate.
[in] DueTime
Um período de tempo, em unidades de tempo do sistema (intervalos de 100 nanossegundos). A estrutura chama a função de retorno de chamada EvtTimerFunc do driver quando o período de tempo especificado é decorrido. O valor do período de tempo pode ser negativo ou positivo da seguinte maneira:
- Se o valor for negativo, o período de tempo será relativo ao tempo atual do sistema.
- Se o valor for positivo, o período de tempo especifica um tempo absoluto (que na verdade é relativo a 1º de janeiro de 1601).
Aviso
Se você definir o UseHighResolutionTimer membro do WDF_TIMER_CONFIG para 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.
Os tempos relativos não são afetados por alterações no tempo do sistema que podem ocorrer dentro do período de tempo especificado. Os tempos absolutos refletem as alterações de tempo do sistema.
A estrutura fornece funções de conversão de tempo que convertem valores de tempo em unidades de tempo do sistema.
Valor de retorno
WdfTimerStart retornará VERDADEIRO se o objeto do temporizador estiver na fila do temporizador do sistema. Caso contrário, esse método retornará FALSE . Para obter mais informações, consulte a seção Comentários a seguir.
Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.
Observações
Os drivers sempre devem chamar WdfTimerStart para iniciar um temporizador depois de criá-lo, independentemente de o temporizador ser um temporizador periódico ou não.
Depois que um driver chama WdfTimerStart, a estrutura chama a função de retorno de chamada EvtTimerFunc do driver quando a hora especificada para o parâmetro dueTime do decorrido. Após essa primeira chamada, a estrutura chama a função de retorno de chamada sempre que o período de tempo especificado pelo Period membro da estrutura de WDF_TIMER_CONFIG do driver decorrido.
A expiração do temporizador depende, em última análise, da granularidade do relógio do sistema. O valor especificado para DueTime garante que a estrutura chame a função de retorno de chamada EvtTimerFunc do driver em ou após o dueTime fornecido. No entanto, WdfTimerStart não pode substituir a granularidade do relógio do sistema, independentemente do valor especificado para DueTime.
Quando um driver chama WdfTimerStart, seu objeto de temporizador é adicionado à fila de objetos do temporizador do sistema. Se o temporizador não for um temporizador periódico, o sistema removerá o objeto de temporizador da fila depois que o "tempo de conclusão" do temporizador tiver decorrido. Se o temporizador for um temporizador periódico, o objeto de temporizador permanecerá na fila até que o driver chame WdfTimerStop.
Um driver pode chamar WdfTimerStart de sua função de retorno de chamada EvtTimerFunc para reiniciar um temporizador não periódico depois que ele expirar.
WdfTimerStart retornará VERDADEIRO se o driver tiver chamado anteriormente WdfTimerStart e o objeto de temporizador ainda estiver na fila do sistema porque o período de tempo não passou (ou porque é um temporizador periódico). Antes de wdfTimerStart retorna TRUE, o sistema operacional redefine o período de tempo para o valor especificado pelo driver na nova chamada para WdfTimerStart. A estrutura chama a função de retorno de chamada EvtTimerFunc somente após o período de tempo decorrido.
Para parar o relógio do temporizador, o driver pode chamar WdfTimerStop .
Para obter mais informações sobre objetos de temporizador de estrutura, consulte Usando temporizadores.
Exemplos
O exemplo de código a seguir inicia um temporizador. A estrutura chamará a função de retorno de chamada EvtTimerFunc do temporizador após 10 milissegundos.
BOOLEAN inTimerQueue;
inTimerQueue = WdfTimerStart(
timerHandle,
WDF_REL_TIMEOUT_IN_MS(10)
);
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Universal |
| versão mínima do KMDF | 1.0 |
| versão mínima do UMDF | 2.0 |
| cabeçalho | wdftimer.h (inclua Wdf.h) |
| biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | <=DISPATCH_LEVEL |
| regras de conformidade de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |