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


Функциональность процедуры диспетчеризации

Требуемые функциональные возможности конкретной подпрограммы отправки зависят от кода функции ввода-вывода, который он обрабатывает, в зависимости от положения отдельного драйвера в цепочке драйверов и типа базового физического устройства.

Большинство подпрограмм отправки обрабатывают входящие пакеты запросов ввода-вывода (IRPs) следующим образом:

  1. Проверьте расположение стека ввода-вывода драйвера в IRP, чтобы определить, что делать, и проверить параметры, если таковые есть, для допустимости.

    Должен ли драйвер проверять местоположение стека ввода-вывода для определения дальнейших действий и проверки параметров, зависит от конкретного IRP_MJ_XXX, а также от того, устанавливает ли этот драйвер отдельную диспетчерскую процедуру для каждого IRP_MJ_XXX, который он обрабатывает.

  2. Выполните запрос и завершите IRP, если это возможно; в противном случае передайте его для дальнейшей обработки драйверами более низкого уровня или другими подпрограммами драйверов устройств.

    Должен ли драйвер передать IRP для дальнейшей обработки, зависит от валидности параметров, если таковые имеются, а также от IRP_MJ_XXX и от уровня драйвера, если таковой имеется, в цепочке драйверов.

Дополнительные сведения об IRP см. в разделе "Обработка irPs".