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


функция обратного вызова IDE_HW_INTERRUPT (irb.h)

Подпрограмма IdeHwInterrupt драйвера минипорта обрабатывает прерывания с адаптера шины узла (HBA), к которому подключен контроллер для драйвера мини-порта.

Примечание В будущем модели драйверов портов ATA и мини-порта ATA могут быть изменены или недоступны. Вместо этого мы рекомендуем использовать драйвера Storport и минипорта Storport модели драйверов.
 

Синтаксис

IDE_HW_INTERRUPT IdeHwInterrupt;

BOOLEAN IdeHwInterrupt(
  [in] PVOID ChannelExtension
)
{...}

Параметры

[in] ChannelExtension

Указатель на расширение канала.

Возвращаемое значение

AtaHwInterrrupt возвращает TRUE, если прерывание создается одним из каналов контроллера. Если канал не создавал прерывание, подпрограмма должна возвращать false как можно быстрее.

Замечания

ПодпрограммаIdeHwInterrupt завершает операции ввода-вывода на основе прерываний.

Если указанный канал не вызвал прерывание, минипорт-драйвер должен выполнить второй (рекурсивный) вызов подпрограмме IdeHwInterrupt для обработки прерываний, предназначенных для другого канала контроллера.

Если драйвер минипорта требует большого количества времени для обработки прерывания, он должен выполнить следующие действия:

  1. Закройте прерывание на HBA.
  2. Отключите прерывания в канале, указанном параметром ChannelExtension.
  3. Запросите подпрограмму рабочей роли с помощью AtaPortRequestWorkerRoutine.
  4. Выполните дополнительную обработку в подпрограмме рабочей роли.
  5. Включите прерывания в канале.
Следующие подпрограммы портов ATA не должны вызываться из подпрограммы IdeHwInterrupt: Однако минипорт-драйвер может запросить рабочую подпрограмму и совершать звонки в подпрограмме рабочей роли.

Подпрограмма рабочей роли должна очистить прерывание на HBA, прежде чем он возвращает TRUE.

Требования

Требование Ценность
целевая платформа Настольный
заголовка irb.h (include Irb.h)

См. также

AtaPortCompleteAllActiveRequests

AtaPortDeviceBusy

AtaPortRequestWorkerRoutine