Функция 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 связан с объектом таймера. По истечении срока действия таймера объект таймера удаляется из очереди системного таймера и его состояние задается для сигнала. Если объект DPC был связан с таймером при его установке, объект DPC вставляется в очередь DPC системы, чтобы выполняться сразу после истечения срока действия таймера.
Время истечения срока действия измеряется относительно системных часов, а точность, с которой операционная система может определить, когда срок действия таймера ограничен степенью детализации системных часов. Дополнительные сведения см. в точности таймера.
Только один экземпляр заданного объекта DPC может быть помещен в очередь в любой момент. Чтобы избежать потенциальных условий гонки, DPC передается в KeSetTimer не следует передавать в KeInsertQueueDpc.
Драйверы должны отменить все активные таймеры в своих выгрузить подпрограммы. Используйте KeCancelTimer для отмены всех таймеров.
Вызывающие KeSetTimer могут указать одно время окончания срока действия таймера. Чтобы задать повторяющийся таймер, используйте KeSetTimerEx.
Дополнительные сведения об объектах таймера см. в объектах таймера иЦП.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |