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 a 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.

Observaciones

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 a NdisCancelTimerObject primero cuando se detengan o descarguen para asegurarse de que una función de 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 MilisecondsPerio d del parámetro NdisSetTimerObject, el temporizador se conoce como temporizador periódico. Si se especificó un valor cero en el parámetro MilisecondsPeriod, el temporizador se conoce como un temporizador de 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 autor de la llamada 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, vea sincronización y notificación en controladores de red.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Universal
encabezado de ndis.h (incluya Ndis.h)
biblioteca de 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