Поделиться через


функция обратного вызова 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чаний).

См. также раздел

EvtInterruptIsr

WDF_INTERRUPT_CONFIG

WdfInterruptSynchronize