Написание процедуры StartIo

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

Большинство драйверов самого низкого уровня предоставляют подпрограмму StartIo и зависят от диспетчера ввода-вывода для постановки irP в очередь устройств, поставляемую системой. Некоторые драйверы самого низкого уровня предназначены для настройки и управления собственными дополнительными очередями IRP, но даже они обычно также предоставляют подпрограмму StartIo . (Дополнительные сведения о дополнительных очередях см. в разделах Настройка и использование очередей устройств и Управление очередями устройств.)

Драйверы более высокого уровня, включая FSD и драйверы функций и фильтров PnP, редко имеют подпрограмму StartIo , так как это может препятствовать производительности. Вместо этого большинство драйверов файловой системы настраивают и поддерживают внутренние очереди IRP. Другие драйверы более высокого уровня либо имеют внутренние очереди для IRP, либо просто передают IRP в более низкие драйверы из своих процедур диспетчеризации. Дополнительные сведения см. в разделе Очереди IRP, управляемые драйвером .

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

В этом разделе рассматриваются следующие вопросы.

Процедуры StartIo в драйверах Lowest-Level

Процедуры StartIo в драйверах Higher-Level

Баллы, которые следует учитывать для процедур StartIo