функция обратного вызова EVT_WDF_INTERRUPT_SYNCHRONIZE (wdfinterrupt.h)
[Относится к KMDF и UMDF]
Функция обратного вызова события EvtInterruptSynchronize драйвера выполняет операции, которые должны быть синхронизированы с функцией обратного вызова EvtInterruptIsr .
Синтаксис
EVT_WDF_INTERRUPT_SYNCHRONIZE EvtWdfInterruptSynchronize;
BOOLEAN EvtWdfInterruptSynchronize(
[in] WDFINTERRUPT Interrupt,
[in] WDFCONTEXT Context
)
{...}
Параметры
[in] Interrupt
Дескриптор объекта прерывания платформы.
[in] Context
Предоставленные драйвером сведения, которые драйвер указывает при вызове WdfInterruptSynchronize.
Возвращаемое значение
Функция обратного вызова EvtInterruptSynchronize должна возвращать значение TRUE , если операция выполнена успешно. В противном случае эта функция должна возвращать значение FALSE.
Комментарии
Чтобы выполнить функцию обратного вызова EvtInterruptSynchronize , драйвер должен вызвать WdfInterruptSynchronize.
Если драйвер настроил объект прерывания для обработки в IRQL устройства (DIRQL), то перед вызовом функции обратного вызова EvtInterruptSynchronize платформа поднимает уровень запроса прерывания процессора до DIRQL и получает спин-блокировку, указанную драйвером в структуре WDF_INTERRUPT_CONFIG объекта прерывания.
В результате, пока выполняется функция обратного вызова EvtInterruptSynchronize , функция обратного вызова EvtInterruptIsr объекта прерывания (и любой другой код, который выполняется в DIRQL при удержании спин-блокировки) не может выполняться.
Функции обратного вызова EvtInterruptSynchronize должны быть разработаны таким образом, чтобы они выполнялись только в течение короткого периода времени. Обычно они используются для доступа к данным прерывания, к которым также обращаются другие функции обратного вызова EvtInterruptSynchronize или EvtInterruptIsr объекта прерывания.
Начиная с kmdf версии 1.11 драйвер может обеспечить обработку прерываний пассивного уровня. Если драйвер запросил обработку прерываний пассивного уровня, то перед вызовом функции EvtInterruptSynchronize в IRQL = PASSIVE_LEVEL платформа получает блокировку прерываний пассивного уровня, настроенную драйвером в структуре WDF_INTERRUPT_CONFIG объекта прерывания.
Дополнительные сведения о функции обратного вызова EvtInterruptSynchronize см. в разделе Синхронизация кода прерывания.
Дополнительные сведения об обработке прерываний в драйверах на основе платформы см. в разделе Обработка аппаратных прерываний.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfinterrupt.h (включая Wdf.h) |
IRQL | (См. раздел примeчаний). |