Функция KeSetTimerEx (wdm.h)
Подпрограмма KeSetTimerEx задает абсолютный или относительный интервал, в течение которого объект таймера должен быть задан в сигнальное состояние, при необходимости предоставляет подпрограмму CustomTimerDpc, выполняемую при истечении этого интервала, и при необходимости предоставляет повторяющийся интервал таймера.
Синтаксис
BOOLEAN KeSetTimerEx(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in] LONG Period,
[in, optional] PKDPC Dpc
);
Параметры
[in, out] Timer
Указатель на объект таймера, который был инициализирован с KeInitializeTimer или KeInitializeTimerEx.
[in] DueTime
Указывает абсолютное или относительное время истечения срока действия таймера. Если значение параметра DueTime отрицательное, время истечения срока действия относительно текущего системного времени. В противном случае срок действия является абсолютным. Время истечения срока действия выражается в системных единицах времени (100-наносекундных интервалов). Абсолютное время истечения срока действия отслеживает любые изменения в системном времени; относительные сроки действия не влияют на изменения системного времени.
[in] Period
Задает необязательный интервал повторения таймера в миллисекундах. Должно быть значением, превышающим или равным нулю. Если значение этого параметра равно нулю, таймер является непериодическим таймером, который автоматически не выполняет повторную очередь.
[in, optional] Dpc
Указатель на объект DPC, который был инициализирован KeInitializeDpc. Этот параметр является необязательным.
Возвращаемое значение
Если объект таймера уже был в очереди системного таймера, KeSetTimerEx возвращает TRUE.
Замечания
Подпрограмма KeSetTimerEx выполняет следующие действия:
Вычисляет время окончания срока действия.
Задает таймер для состояния, не сигнализуемого.
Задает повторяющийся интервал для таймера, если он был указан.
Вставляет объект таймера в очередь системного таймера.
Если объект таймера уже был в очереди таймера, он неявно отменяется перед тем, как задать новое время окончания срока действия. Вызов KeSetTimerEx до истечения срока действия DueTime истек срок действия таймера и вызова Dpc, связанного с предыдущим вызовом.
Время истечения срока действия измеряется относительно системных часов, а точность, с которой операционная система может определить, когда срок действия таймера ограничен степенью детализации системных часов. Дополнительные сведения см. в точности таймера.
Если указан параметр Dpc, объект DPC связан с объектом таймера. Когда срок действия таймера истекает, объект таймера удаляется из очереди системного таймера и устанавливается в сигнальное состояние. Если объект DPC был связан с таймером при его установке, объект DPC вставляется в очередь DPC системы, чтобы выполняться сразу после истечения срока действия таймера.
Подпрограмма DPC не может освободить периодический таймер. Подпрограмма DPC может освободить непериодический таймер.
Обратите внимание, что периодический таймер автоматически перезапускается после истечения срока действия. Таким образом, на многопроцессорном компьютере DPC для периодического таймера может работать одновременно на двух процессорах.
Только один экземпляр заданного объекта DPC может быть помещен в очередь в любой момент. Чтобы избежать потенциальных условий гонки, DPC передается в KeSetTimerEx не следует передавать в KeInsertQueueDpc.
Драйверы должны отменить все активные таймеры в своих выгрузить подпрограммы. Используйте KeCancelTimer для отмены всех таймеров.
Дополнительные сведения об объектах таймера см. в объектах таймера иЦП.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |