Função KeSetTimerEx (wdm.h)
A rotina KeSetTimerEx define o intervalo absoluto ou relativo no qual um objeto de temporizador deve ser definido como um estado sinalizado, opcionalmente fornece uma rotina CustomTimerDpc a ser executada quando esse intervalo expira e, opcionalmente, fornece um intervalo recorrente para o temporizador.
Sintaxe
BOOLEAN KeSetTimerEx(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in] LONG Period,
[in, optional] PKDPC Dpc
);
Parâmetros
[in, out] Timer
Ponteiro para um objeto de temporizador que foi inicializado com KeInitializeTimer ou KeInitializeTimerEx.
[in] DueTime
Especifica o tempo absoluto ou relativo em que o temporizador deve expirar. Se o valor do parâmetro DueTime for negativo, o tempo de expiração será relativo ao tempo atual do sistema. Caso contrário, o tempo de expiração será absoluto. O tempo de expiração é expresso em unidades de tempo do sistema (intervalos de 100 nanossegundos). Os tempos de expiração absolutos acompanham as alterações na hora do sistema; os tempos de expiração relativos não são afetados pelas alterações de tempo do sistema.
[in] Period
Especifica um intervalo recorrente opcional para o temporizador em milissegundos. Deve ser um valor maior ou igual a zero. Se o valor desse parâmetro for zero, o temporizador será um temporizador nãoperiódico que não se enfileira automaticamente.
[in, optional] Dpc
Ponteiro para um objeto DPC que foi inicializado por KeInitializeDpc. Esse parâmetro é opcional.
Valor de retorno
Se o objeto de temporizador já estiver na fila do temporizador do sistema, KeSetTimerEx retornará true.
Observações
A rotina de KeSetTimerEx faz o seguinte:
Calcula o tempo de expiração.
Define o temporizador como um estado não sinalizado.
Define o intervalo recorrente para o temporizador, se um tiver sido especificado.
Insere o objeto timer na fila do temporizador do sistema.
Se o objeto de temporizador já estiver na fila do temporizador, ele será implicitamente cancelado antes de ser definido como o novo tempo de expiração. Uma chamada para KeSetTimerEx antes que o DueTime especificado anteriormente tenha expirado cancela o temporizador e a chamada para o de Dpc, se houver, associado à chamada anterior.
Os tempos de expiração são medidos em relação ao relógio do sistema e a precisão com que o sistema operacional pode detectar quando um temporizador expira é limitada pela granularidade do relógio do sistema. Para obter mais informações, consulte de Precisão do Temporizador.
Se o parâmetro Dpc for especificado, um objeto DPC será associado ao objeto de temporizador. Quando o temporizador expira, o objeto de temporizador é removido da fila do temporizador do sistema e é definido como um estado sinalizado. Se um objeto DPC tiver sido associado ao temporizador quando ele foi definido, o objeto DPC será inserido na fila DPC do sistema a ser executado assim que as condições permitirem após o intervalo do temporizador expirar.
Uma rotina de DPC não pode desalocar um temporizador periódico. Uma rotina de DPC pode desalocar um temporizador nãoperiódico.
Observe que um temporizador periódico é reiniciado automaticamente assim que expira. Assim, em um computador multiprocessador, o DPC para um temporizador periódico pode ser executado em dois processadores simultaneamente.
Somente uma instanciação de um determinado objeto DPC pode ser enfileirada a qualquer momento. Para evitar possíveis condições de corrida, o DPC passado para KeSetTimerEx não deve ser passado para KeInsertQueueDpc.
Os drivers devem cancelar todos os temporizadores ativos em suas rotinas de Descarregar. Use KeCancelTimer para cancelar qualquer temporizador.
Para obter mais informações sobre objetos de temporizador, consulte Objetos do Temporizador e DPCs.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 2000. |
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |