Функция KeCancelTimer (wdm.h)
Программа KeCancelTimer отменяет срок действия объекта таймера до истечения срока действия таймера.
Синтаксис
BOOLEAN KeCancelTimer(
[in, out] PKTIMER unnamedParam1
);
Параметры
[in, out] unnamedParam1
Указатель на инициализированный объект таймера, для которого вызывающий объект предоставляет хранилище.
Возвращаемое значение
Если указанный объект таймера находится в очереди системного таймера, KeCancelTimer возвращает TRUE.
Замечания
Если объект таймера в настоящее время находится в очереди системного таймера, он удаляется из очереди. Если объект DPC связан с таймером, он также отменяется. В противном случае операция не выполняется.
Подпрограмма возвращает TRUE, если таймер по-прежнему находится в очереди таймера. Непериодический таймер удаляется из системной очереди сразу после истечения срока его действия. Таким образом, для непериодических таймеров KeCancelTimer возвращает false, если таймер DPC был поставлен в очередь. Периодические таймеры всегда находятся в очереди таймера, поэтому KeCancelTimer всегда возвращает TRUE для периодических таймеров.
Обратите внимание, что DPC, который уже запущен, выполняется до завершения. Драйвер должен убедиться, что DPC завершен, прежде чем освободить все ресурсы, используемые DPC. Для непериодического таймера можно использовать примитивы синхронизации, такие как объекты событий, для синхронизации между драйвером и DPC. Драйвер может проверить код возврата KeCancelTimer, чтобы определить, выполняется ли DPC. Если это так, DPC может сигнализировать о событии перед выходом, и драйвер может дождаться сброса этого события в состояние без сигнала.
Так как для периодических таймеров KeCancelTimer всегда возвращает TRUE, драйверы должны использовать другой метод, чтобы ждать завершения DPC. Используйте процедуру KeFlushQueuedDpcs, чтобы блокировать до выполнения DPC.
Драйверы не должны синхронизировать данные, хранящиеся в глобальных переменных или расширениях объектов драйвера. Система автоматически вызывает KeFlushQueuedDpcs перед выделением любого из этих регионов.
Дополнительные сведения об объектах таймера см. в объектах таймера иЦП.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |