Написание процедуры StartIo
Как следует из названия, подпрограмма StartIo отвечает за запуск операции ввода-вывода на физическом устройстве.
Большинство драйверов самого низкого уровня предоставляют подпрограмму StartIo и зависят от диспетчера ввода-вывода для постановки irP в очередь устройств, поставляемую системой. Некоторые драйверы самого низкого уровня предназначены для настройки и управления собственными дополнительными очередями IRP, но даже они обычно также предоставляют подпрограмму StartIo . (Дополнительные сведения о дополнительных очередях см. в разделах Настройка и использование очередей устройств и Управление очередями устройств.)
Драйверы более высокого уровня, включая FSD и драйверы функций и фильтров PnP, редко имеют подпрограмму StartIo , так как это может препятствовать производительности. Вместо этого большинство драйверов файловой системы настраивают и поддерживают внутренние очереди IRP. Другие драйверы более высокого уровня либо имеют внутренние очереди для IRP, либо просто передают IRP в более низкие драйверы из своих процедур диспетчеризации. Дополнительные сведения см. в разделе Очереди IRP, управляемые драйвером .
Вы можете использовать подпрограмму IoSetStartIoAttributes , чтобы задать атрибуты, которые изменяют обработку StartIo для вашего драйвера.
В этом разделе рассматриваются следующие вопросы.
Процедуры StartIo в драйверах Lowest-Level