функция обратного вызова EVT_WDF_INTERRUPT_DISABLE (wdfinterrupt.h)
[Относится к KMDF и UMDF]
Функция обратного вызова события EvtInterruptDisable драйвера отключает указанное аппаратное прерывание.
Синтаксис
EVT_WDF_INTERRUPT_DISABLE EvtWdfInterruptDisable;
NTSTATUS EvtWdfInterruptDisable(
[in] WDFINTERRUPT Interrupt,
[in] WDFDEVICE AssociatedDevice
)
{...}
Параметры
[in] Interrupt
Дескриптор объекта прерывания платформы.
[in] AssociatedDevice
Дескриптор объекта устройства платформы, который драйвер передал в WdfInterruptCreate.
Возвращаемое значение
Функция обратного вызова EvtInterruptDisable должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(status) равно TRUE , если функция не обнаруживает ошибок. В противном случае эта функция должна возвращать значение состояния, для которого NT_SUCCESS(status) равно FALSE.
Комментарии
Чтобы зарегистрировать функцию обратного вызова EvtInterruptDisable , драйвер должен поместить адрес функции обратного вызова в структуру WDF_INTERRUPT_CONFIG перед вызовом WdfInterruptCreate.
Платформа вызывает функцию обратного вызова EvtInterruptDisable драйвера каждый раз, когда устройство выходит из состояния работы (D0). Кроме того, драйвер может заставить платформу вызвать функцию обратного вызова EvtInterruptDisable , вызвав WdfInterruptDisable. Обратите внимание, что большинство драйверов на основе платформы не должны вызывать WdfInterruptDisable, так как платформа вызывает функцию обратного вызова EvtInterruptDisable драйвера каждый раз, когда устройство выходит из рабочего состояния (D0).
Перед вызовом функции обратного вызова EvtInterruptDisable платформа вызывает IRQL процессора в DIRQL устройства и получает спиновую блокировку, указанную драйвером в структуре WDF_INTERRUPT_CONFIG объекта прерывания.
Начиная с kmdf версии 1.11 драйвер может обеспечить обработку прерываний пассивного уровня. Если драйвер запросил обработку прерываний пассивного уровня, то перед вызовом функции EvtInterruptDisable в IRQL = PASSIVE_LEVEL платформа получает блокировку прерываний пассивного уровня, настроенную драйвером в структуре WDF_INTERRUPT_CONFIG объекта прерывания.
Перед вызовом функции обратного вызова EvtInterruptDisable платформа вызывает функцию обратного вызова события EvtDeviceD0ExitPreinterruptsDisabled драйвера по адресу IRQL = PASSIVE_LEVEL.
Дополнительные сведения об обработке прерываний в драйверах на основе платформы см. в разделе Обработка аппаратных прерываний.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfinterrupt.h (включая Wdf.h) |
IRQL | (См. раздел примeчаний). |