функция обратного вызова EVT_WDF_TIMER (wdftimer.h)
[Применимо к KMDF и UMDF]
Функция обратного вызова события EvtTimerFunc вызывается по истечении указанного периода времени.
Синтаксис
EVT_WDF_TIMER EvtWdfTimer;
void EvtWdfTimer(
[in] WDFTIMER Timer
)
{...}
Параметры
[in] Timer
Дескриптор объекта таймера платформы, полученный из предыдущего вызова WdfTimerCreate.
Возвращаемое значение
None
Remarks
Чтобы зарегистрировать функцию обратного вызова EvtTimerFunc и указать период времени, который должен пройти до вызова этой функции платформой, драйвер должен вызвать WdfTimerCreate.
В версиях KMDF, предшествующих версии 1.9, платформа реализует функции обратного вызова EvtTimerFunc в качестве отложенных вызовов процедур (DPC). Таким образом, по истечении периода времени система добавляет вызов функции обратного вызова EvtTimerFunc в очередь DPC. Система вызывает функцию обратного вызова EvtTimerFunc по адресу IRQL = DISPATCH_LEVEL, когда она достигает передней части очереди и доступен ЦП, работающий на DISPATCH_LEVEL IRQL < .
В KMDF версии 1.9 и более поздних платформа по умолчанию реализует функции обратного вызова EvtTimerFunc в качестве DPC. Кроме того, если драйвер задает для объекта таймера уровень выполнения WdfExecutionLevelPassive, платформа вызывает функцию обратного вызова EvtTimerFunc из рабочего элемента в IRQL = PASSIVE_LEVEL.
Примечание
Если функция обратного вызова EvtTimerFunc , выполняющаяся в PASSIVE_LEVEL вызывает WdfObjectDelete, это приводит к взаимоблокировке. Вместо этого либо дождитесь автоматического удаления таймера родительского элемента при удалении устройства, либо, если необходимо удалить его раньше, запланируйте рабочий элемент из обратного вызова таймера.
Начиная с версии UMDF 2.0 функции обратного вызова EvtTimerFunc драйвера UMDF всегда выполняются в PASSIVE_LEVEL.
Дополнительные сведения об объектах таймера платформы см. в разделе Использование таймеров.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdftimer.h (включая Wdf.h) |
IRQL | См. раздел "Примечания". |