Функция 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) |