Последовательность действий рабочих процедур
Конкретное поведение каждой из рабочих процедур драйвера будет зависеть от функций, которые ей будет поручено поддерживать. Тем не менее, общие обязанности этих процедур включают следующие моменты:
Вызов IoGetCurrentIrpStackLocation для того, чтобы получить указатель на ячейку стека IRP пакета, относящуюся к ведению данного драйвера.
Дополнительную проверку параметров, специфичную для данного типа запроса и устройства.
Продолжение обработки IRP до момента успешного завершения или возникновения ошибочной ситуации, препятствующей дальнейшей обработке.
Когда рабочая процедура драйвера обрабатывает пакет IRP, существует только три возможных варианта окончания ее работы.
Параметры запроса не проходят проверку на полноту и правильность, и запрос отклоняется.
Запрос может быть обработан в пределах данной рабочей процедуры драйвера, без вовлечения физического устройства, например, чтение/запись данных нулевой длины.
Происходит обращение к физическому устройству с целью получить данные или выполнить действия над устройством, необходимые для завершения запроса.
Содержание раздела