Compartilhar via


Função KeSetTimer (wdm.h)

A rotina KeSetTimer define o intervalo absoluto ou relativo no qual um objeto de temporizador deve ser definido como um estado sinalizado e, opcionalmente, fornece uma rotina CustomTimerDpc a ser executada quando esse intervalo expira.

Sintaxe

BOOLEAN KeSetTimer(
  [in, out]      PKTIMER       Timer,
  [in]           LARGE_INTEGER DueTime,
  [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 à hora 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, optional] Dpc

Ponteiro para um objeto DPC que foi inicializado por KeInitializeDpc. Esse parâmetro é opcional.

Retornar valor

Se o objeto de temporizador já estava na fila do temporizador do sistema, KeSetTimer retornará TRUE.

Comentários

A rotina KeSetTimer faz o seguinte:

  • Calcula o tempo de expiração.

  • Define o temporizador como um estado não sinalizado.

  • 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 KeSetTimer antes do DueTime especificado anteriormente expirou cancela o temporizador e a chamada para o Dpc, se houver, associada à chamada anterior.

Se o parâmetro Dpc for especificado, um objeto DPC será associado ao objeto timer. Quando o temporizador expira, o objeto de temporizador é removido da fila do temporizador do sistema e seu estado é definido como 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 executada assim que as condições permitirem após o intervalo do temporizador expirar.

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 Precisão do temporizador.

Apenas 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 KeSetTimer não deve ser passado para KeInsertQueueDpc.

Os motoristas devem cancelar todos os temporizadores ativos em suas rotinas de descarregamento . Use KeCancelTimer para cancelar qualquer temporizador.

Os chamadores de KeSetTimer podem especificar um tempo de expiração para um temporizador. Para definir um temporizador recorrente, use KeSetTimerEx.

Para obter mais informações sobre objetos de temporizador, consulte Objetos do Temporizador e DPCs.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Confira também

KeCancelTimer

KeInitializeDpc

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeSetTimerEx

KeWaitForMultipleObjects