Программирование драйверов Windows

         

Процедура обслуживания прерываний ISR


При возникновении прерываний, диспетчер прерываний (из состава кода ядра) производит вызов драйверной ISR процедуры. Процедура ISR обычно выполняет следующие действия:

  • Проверяет, ожидалось ли прерывание (относится ли поступившее прерывание к обслуживающему устройству).
  • Освобождает (завершает) прерывание.
  • В случае, если ранее была начата операция программируемого ввода/вывода (не DMA), но передача данных еще не завершена окончательно, процедура ISR могла бы начать операцию передачи следующей порции данных и завершить свою работу, пока она не будет вызвана по поводу следующего прерывания.
  • В случае, если ранее была начата операция DMA и остались еще не переданные данные, то ISR могла бы запланировать вызов DPC процедуры для настройки DMA аппаратуры и передачи следующей порции данных.
  • В случае, если произошла ошибка или передача данных не была завершена, то ISR могла бы запланировать вызов DPC процедуры для того, чтобы выполнить пост-обработку при более низком уровне IRQL.


  • Содержание раздела