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


Последовательность действий рабочих процедур


Конкретное поведение каждой из рабочих процедур драйвера будет зависеть от функций, которые ей будет поручено поддерживать. Тем не менее, общие обязанности этих процедур включают следующие моменты:

  1. Вызов IoGetCurrentIrpStackLocation для того, чтобы получить указатель на ячейку стека IRP пакета, относящуюся к ведению данного драйвера.
  2. Дополнительную проверку параметров, специфичную для данного типа запроса и устройства.
  3. Продолжение обработки IRP до момента успешного завершения или возникновения ошибочной ситуации, препятствующей дальнейшей обработке.

Когда рабочая процедура драйвера обрабатывает пакет IRP, существует только три возможных варианта окончания ее работы.

  • Параметры запроса не проходят проверку на полноту и правильность, и запрос отклоняется.
  • Запрос может быть обработан в пределах данной рабочей процедуры драйвера, без вовлечения физического устройства, например, чтение/запись данных нулевой длины.
  • Происходит обращение к физическому устройству с целью получить данные или выполнить действия над устройством, необходимые для завершения запроса.




Начало  Назад  Вперед