Функция KeSetTimer (wdm.h)

Подпрограмма KeSetTimer задает абсолютный или относительный интервал, через который объект таймера должен быть задан в состояние сигнала, и при необходимости предоставляет подпрограмму CustomTimerDpc , которая будет выполняться по истечении этого интервала.

Синтаксис

BOOLEAN KeSetTimer(
  [in, out]      PKTIMER       Timer,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] PKDPC         Dpc
);

Параметры

[in, out] Timer

Указатель на объект таймера, инициализированный с помощью KeInitializeTimer или KeInitializeTimerEx.

[in] DueTime

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

[in, optional] Dpc

Указатель на объект DPC, инициализированный keInitializeDpc. Этот параметр является необязательным.

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

Если объект таймера уже находился в очереди системного таймера, KeSetTimer возвращает значение TRUE.

Комментарии

Подпрограмма KeSetTimer выполняет следующие действия:

  • Вычисляет время истечения срока действия.

  • Устанавливает таймер в состояние без сигнала.

  • Вставляет объект таймера в очередь системного таймера.

Если объект таймера уже находился в очереди таймера, он неявно отменяется, прежде чем устанавливается новое время истечения срока действия. Вызов KeSetTimer до истечения срока действия указанного ранее DueTime отменяет как таймер, так и вызов Dpc, если таковой имеется, связанный с предыдущим вызовом.

Если указан параметр Dpc , объект DPC связывается с объектом таймера. По истечении срока действия таймера объект таймера удаляется из очереди системного таймера, а его состояние устанавливается в signaled. Если объект DPC был связан с таймером при его установке, объект DPC вставляется в очередь системного DPC для выполнения сразу после истечения срока действия интервала таймера.

Время истечения срока действия измеряется относительно системных часов, а точность, с которой операционная система может определить время истечения срока действия таймера, ограничена степенью детализации системных часов. Дополнительные сведения см. в разделе Точность таймера.

В любой момент можно поместить в очередь только один экземпляр данного объекта DPC. Чтобы избежать потенциальных условий гонки, DPC, переданный в KeSetTimer , не следует передавать в KeInsertQueueDpc.

Драйверы должны отменить все активные таймеры в подпрограммах выгрузки . Используйте KeCancelTimer для отмены любых таймеров.

Вызывающие операторы KeSetTimer могут указать одно время истечения срока действия таймера. Чтобы задать повторяющийся таймер, используйте KeSetTimerEx.

Дополнительные сведения об объектах таймера см. в разделе Объекты таймера и DPC.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm)

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

KeCancelTimer

KeInitializeDpc

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeSetTimerEx

KeWaitForMultipleObjects