Compartilhar via


Função NdisCancelTimerObject (ndis.h)

A função NdisCancelTimerObject cancela um objeto de temporizador associado a uma chamada anterior à função NdisSetTimerObject .

Sintaxe

BOOLEAN NdisCancelTimerObject(
  [in] NDIS_HANDLE TimerObject
);

Parâmetros

[in] TimerObject

Um identificador para um objeto de temporizador que o NDIS fornece quando um driver chama o Função NdisAllocateTimerObject .

Retornar valor

NdisCancelTimerObject retornará TRUE se o objeto de temporizador especificado estiver na fila do temporizador do sistema; caso contrário, retornará FALSE.

Comentários

Uma chamada para NdisCancelTimerObject cancela a execução de uma função NetTimerCallback , desde que o último intervalo de tempo limite especificado ainda não tenha expirado.

Os drivers NDIS devem chamar NdisCancelTimerObject primeiro quando estiverem parando ou descarregando para garantir que uma função NetTimerCallback não tente acessar os recursos que o driver já liberou.

Se um valor diferente de zero tiver sido especificado no parâmetro MillisecondsPeriod da função NdisSetTimerObject , o temporizador será conhecido como um temporizador periódico. Se um valor zero tiver sido especificado no parâmetro MillisecondsPeriod , o temporizador será conhecido como um temporizador único. Os seguintes pontos se aplicam ao cancelamento de ambos os tipos de temporizadores:

  • Se o chamador de NdisCancelTimerObject estiver cancelando um temporizador periódico, ele deverá estar em execução em IRQL = PASSIVE_LEVEL. Caso contrário, o chamador de NdisCancelTimerObject deverá estar em execução em IRQL <= DISPATCH_LEVEL.
  • Se o chamador de NdisCancelTimerObject estiver cancelando um temporizador periódico, NdisCancelTimerObject chamará KeFlushQueuedDpcs para garantir que o temporizador não esteja em execução no momento. Portanto, o chamador não precisa ter um mecanismo de sincronização separado para garantir que o temporizador não esteja sendo executado em outro processador.

    Se o chamador de NdisCancelTimerObject estiver cancelando um temporizador único, será necessário que o chamador tenha um mecanismo de sincronização separado para garantir que o temporizador não esteja em execução em outro processador no momento. Por exemplo, o chamador pode chamar NDIS_WAIT_FOR_MUTEX para aguardar o thread do temporizador sinalizar um objeto mutex quando o thread estiver prestes a ser concluído.

    Para obter mais informações, consulte Sincronização e notificação em drivers de rede.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL Consulte a seção Comentários
Regras de conformidade da DDI Irql_Timer_Function(ndis), PeriodicTimer(ndis)

Confira também

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback