Compartilhar via


Função KeCancelTimer (wdm.h)

A rotina KeCancelTimer desativa um objeto de temporizador antes que o intervalo de temporizador, se algum tiver sido definido, expire.

Sintaxe

BOOLEAN KeCancelTimer(
  [in, out] PKTIMER unnamedParam1
);

Parâmetros

[in, out] unnamedParam1

Ponteiro para um objeto de temporizador inicializado, para o qual o chamador fornece o armazenamento.

Retornar valor

Se o objeto de temporizador especificado estiver na fila do temporizador do sistema, KeCancelTimer retornará TRUE.

Comentários

Se o objeto de temporizador estiver atualmente na fila do temporizador do sistema, ele será removido da fila. Se um objeto DPC estiver associado ao temporizador, ele também será cancelado. Caso contrário, nenhuma operação será executada.

A rotina retornará TRUE se o temporizador ainda estiver na fila do temporizador. Um temporizador não persistente é removido da fila do sistema assim que ele expira. Portanto, para temporizadores nãoperiódicos, KeCancelTimer retornará FALSE se o DPC do temporizador tiver sido enfileirado. Os temporizadores periódicos estão sempre na fila do temporizador, portanto, KeCancelTimer sempre retorna TRUE para temporizadores periódicos.

Observe que um DPC que já está em execução é executado até a conclusão. O driver deve garantir que o DPC tenha sido concluído antes de liberar todos os recursos usados pelo DPC. Para um temporizador não periódico, você pode usar primitivos de sincronização, como objetos de evento, para sincronizar entre o driver e o DPC. O driver pode marcar o código de retorno de KeCancelTimer para determinar se o DPC está em execução. Nesse caso, o DPC pode sinalizar o evento antes de sair e o driver pode esperar que esse evento seja redefinido para o estado não sinalizado.

Como para temporizadores periódicos KeCancelTimer sempre retorna TRUE, os drivers devem usar uma técnica diferente para aguardar até que o DPC seja concluído. Use a rotina KeFlushQueuedDpcs para bloquear até que o DPC seja executado.

Os drivers não precisam sincronizar dados armazenados em variáveis globais ou extensões de objeto de driver. O sistema chama automaticamente KeFlushQueuedDpcs antes de desalocar qualquer uma dessas regiões.

Para obter mais informações sobre objetos de temporizador, consulte Objetos de 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 da DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

Confira também

KeInitializeTimer

KeReadStateTimer

KeSetTimer