Compartilhar via


Função KeCancelTimer (wdm.h)

O KeCancelTimer rotina elimina um objeto de temporizador antes que o intervalo do 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.

Valor de retorno

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

Observações

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á VERDADEIRO se o temporizador ainda estiver na fila do temporizador. Um temporizador nãoperídico é removido da fila do sistema assim que expira. Assim, para timers nãoperí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 verdadeiro 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 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 verificar 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 aguardar 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 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)

Consulte também

KeInitializeTimer

KeReadStateTimer

KeSetTimer