Compartir a través de


Función NdisCancelTimerObject (ndis.h)

La función NdisCancelTimerObject cancela un objeto de temporizador asociado a una llamada anterior a la función NdisSetTimerObject .

Sintaxis

BOOLEAN NdisCancelTimerObject(
  [in] NDIS_HANDLE TimerObject
);

Parámetros

[in] TimerObject

Identificador de un objeto de temporizador que proporciona NDIS cuando un controlador llama al Función NdisAllocateTimerObject .

Valor devuelto

NdisCancelTimerObject devuelve TRUE si el objeto de temporizador especificado está en la cola del temporizador del sistema; de lo contrario, devuelve FALSE.

Comentarios

Una llamada a NdisCancelTimerObject cancela la ejecución de una función NetTimerCallback , siempre que el último intervalo de tiempo de espera especificado aún no haya expirado.

Los controladores NDIS deben llamar primero a NdisCancelTimerObject cuando se detengan o descarguen para asegurarse de que una función NetTimerCallback no intenta acceder a los recursos que el controlador ya ha liberado.

Si se especificó un valor distinto de cero en el parámetro MillisecondsPeriod de la función NdisSetTimerObject , el temporizador se conoce como temporizador periódico. Si se especificó un valor cero en el parámetro MillisecondsPeriod , el temporizador se conoce como temporizador de un solo disparo. Los siguientes puntos se aplican a la cancelación de ambos tipos de temporizadores:

  • Si el autor de la llamada de NdisCancelTimerObject cancela un temporizador periódico, debe ejecutarse en IRQL = PASSIVE_LEVEL. De lo contrario, el autor de la llamada de NdisCancelTimerObject debe ejecutarse en IRQL <= DISPATCH_LEVEL.
  • Si el autor de la llamada de NdisCancelTimerObject cancela un temporizador periódico, NdisCancelTimerObject llama a KeFlushQueuedDpcs para asegurarse de que el temporizador no se está ejecutando actualmente. Por lo tanto, no es necesario que el autor de la llamada tenga un mecanismo de sincronización independiente para asegurarse de que el temporizador no se está ejecutando actualmente en otro procesador.

    Si el autor de la llamada de NdisCancelTimerObject cancela un temporizador de un solo disparo, se requiere que el autor de la llamada tenga un mecanismo de sincronización independiente para asegurarse de que el temporizador no se está ejecutando actualmente en otro procesador. Por ejemplo, el llamador podría llamar a NDIS_WAIT_FOR_MUTEX para esperar a que el subproceso del temporizador señale un objeto de exclusión mutua cuando el subproceso está a punto de completarse.

    Para obtener más información, consulte Sincronización y notificación en controladores de red.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL Consulte la sección Comentarios.
Reglas de cumplimiento de DDI Irql_Timer_Function(ndis), PeriodicTimer(ndis)

Consulte también

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback