Включение и отключение прерываний (UMDF 1)
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.
Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.
Дополнительные сведения см. в разделе начало работы с помощью UMDF.
Если драйвер обрабатывает прерывания устройства, он должен предоставить функции обратного вызова OnInterruptEnable и OnInterruptDisable , которые позволяют включить и отключить прерывания. Эти функции обратного вызова должны выполнять все действия, необходимые для включения и отключения механизма прерывания устройства.
Если драйвер должен выполнять дополнительные операции, связанные с включением или отключением прерываний, драйвер также может предоставить функции обратного вызова IPnpCallbackHardwareInterrupt::OnD0EntryPostInterruptsEnabled и IPnpCallbackHardwareInterrupt::OnD0ExitPreruptsDisabled .
Платформа вызывает функции обратного вызова OnInterruptEnable и IPnpCallbackHardwareInterrupt::OnD0EntryPostInterruptsEnabled каждый раз, когда устройство переходит в рабочее (D0) состояние после вызова функции обратного вызова OnD0Entry драйвера. Платформа вызывает функции обратного вызова IPnpCallbackHardwareInterrupt::OnD0ExitPreinterruptsDisabled и OnInterruptDisable каждый раз, когда устройство выходит из рабочего состояния, прежде чем платформа вызовет функцию обратного вызова OnD0Exit драйвера. Дополнительные сведения о том, когда платформа вызывает функции обратного вызова драйвера, см. в статье PnP и управление питанием в драйверах на основе UMDF.
Не следует предполагать, что устройство будет использовать одни и те же ресурсы прерывания каждый раз, когда платформа вызывает функцию обратного вызова OnInterruptEnable драйвера. Иногда диспетчер PnP перераспределяет системные ресурсы и может назначать новые ресурсы прерываний устройству.
Драйвер может вызвать IWDFInterrupt::GetInfo , чтобы определить ресурсы прерывания устройства. Драйвер может вызвать IWDFInterrupt::GetDevice , чтобы определить устройство, к которому принадлежит объект прерывания.
Чтобы включить и отключить прерывания напрямую, драйвер может вызвать методы IWDFInterrupt::Enable и IWDFInterrupt::D isable объекта прерывания, которые вызывают функции обратного вызова событий OnInterruptEnable и OnInterruptDisable драйвера. Однако большинство драйверов должны разрешать платформе вызывать функции обратного вызова OnInterruptEnable и OnInterruptDisable в нужное время.