Поделиться через


Функция NdisCancelTimerObject (ndis.h)

Функция NdisCancelTimerObject отменяет объект таймера, связанный с предыдущим вызовом функции NdisSetTimerObject .

Синтаксис

BOOLEAN NdisCancelTimerObject(
  [in] NDIS_HANDLE TimerObject
);

Параметры

[in] TimerObject

Дескриптор объекта таймера, который NDIS предоставляет, когда драйвер вызываетФункция NdisAllocateTimerObject.

Возвращаемое значение

NdisCancelTimerObject возвращает значение TRUE , если указанный объект таймера находится в очереди системного таймера; в противном случае возвращается значение FALSE.

Комментарии

Вызов NdisCancelTimerObject отменяет выполнение функции NetTimerCallback при условии, что последний указанный интервал времени ожидания еще не истек.

Драйверы NDIS должны сначала вызывать NdisCancelTimerObject при остановке или выгрузке, чтобы функция NetTimerCallback не пыталась получить доступ к ресурсам, уже выпущенным драйвером.

Если в параметре MillisecondsPeriod функции NdisSetTimerObject указано ненулевое значение, таймер называется периодическим таймером. Если в параметре MillisecondsPeriod указано нулевое значение, таймер называется одноразовым таймером. Следующие моменты относятся к отмене обоих типов таймеров:

  • Если вызывающий объект NdisCancelTimerObject отменяет периодический таймер, он должен выполняться в IRQL = PASSIVE_LEVEL. В противном случае вызывающий объект NdisCancelTimerObject должен выполняться в IRQL <= DISPATCH_LEVEL.
  • Если вызывающий объект NdisCancelTimerObject отменяет периодический таймер, NdisCancelTimerObject вызывает KeFlushQueuedDpcs , чтобы убедиться, что таймер не запущен в данный момент. Таким образом, вызывающей стороне не требуется отдельный механизм синхронизации, чтобы убедиться, что таймер не выполняется в данный момент на другом процессоре.

    Если вызывающий объект NdisCancelTimerObject отменяет одноразовый таймер, вызывающий объект должен иметь отдельный механизм синхронизации, чтобы таймер не работал на другом процессоре. Например, вызывающий объект может вызвать NDIS_WAIT_FOR_MUTEX , чтобы дождаться, пока поток таймера сообщит объекту мьютекса о завершении потока.

    Дополнительные сведения см. в разделе Синхронизация и уведомление в сетевых драйверах.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL См. раздел "Примечания"
Правила соответствия DDI Irql_Timer_Function(ndis), PeriodicTimer(ndis)

См. также раздел

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback