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

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

Синтаксис

BOOLEAN NdisSetTimerObject(
  [in]           NDIS_HANDLE   TimerObject,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] LONG          MillisecondsPeriod,
  [in, optional] PVOID         FunctionContext
);

Параметры

[in] TimerObject

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

[in] DueTime

Абсолютное или относительное время, в которое истекает срок действия таймера. Если значение параметра DueTime отрицательное, время истечения срока действия будет относительно текущего системного времени. В противном случае срок действия будет абсолютным. Время истечения срока действия выражается в системных единицах времени (100-наносекундные интервалы). Абсолютное время истечения срока действия отслеживает любые изменения системного времени; Изменения системного времени не влияют на относительный срок действия.

[in, optional] MillisecondsPeriod

Периодический интервал времени в миллисекундах, который истекает между каждым срабатыванием таймера и следующим вызовом функции NetTimerCallback , если таймер не отменен. Значение этого параметра должно быть меньше или равно MAXLONG.

[in, optional] FunctionContext

Указатель на область контекста, предоставляемую вызывающим объектом, которую NDIS передает связанной функции NetTimerCallback при срабатывании таймера. Если этот параметр имеет значение NULL, NDIS использует значение по умолчанию, указанное в структура NDIS_TIMER_CHARACTERISTICS .

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

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

Комментарии

После вызова драйвером NdisSetTimerObject объект таймера помещается в очередь до истечения интервала, указанного в параметре DueTime . По истечении интервала объект таймера удаляется из очереди, а функция NetTimerCallback , предоставляемая вызывающим объектом, запускается один раз в IRQL = DISPATCH_LEVEL, как только процессор становится доступным.

Если в параметре MillisecondsPeriod указано ненулевое значение, объект таймера снова помещается в очередь до тех пор, пока не истечет интервал, указанный в millisecondsPeriod . По истечении этого интервала объект таймера отправляется в очередь, а функция NetTimerCallback , предоставляемая вызывающим объектом, запускается один раз в IRQL = DISPATCH_LEVEL как только процессор становится доступным.

Примечание Начиная с Windows 7, вы можете уменьшить энергопотребление, вызвав NdisSetCoalescableTimerObject вместо NdisSetTimerObject , если точность таймера не требуется.
 
Дополнительные сведения о поведении таймера см. в разделе KeSetTimerEx.

Чтобы отменить таймер, вызовите функцию NdisCancelTimerObject .

Требования

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

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

KeSetTimerEx

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetCoalescableTimerObject

NetTimerCallback