Обработка запросов к периферийным устройствам хранилища
Для всех запросов, требующих выполнения драйвера порта хранилища запроса через базовую шину, драйвер класса должен настроить IRP с блоком запросов SCSI (SRB), содержащим блок дескриптора команд SCSI (CDB). Следовательно, большинство драйверов класса хранения имеют одну или несколько внутренних подпрограмм BuildRequest для создания SDB. Дополнительные сведения о таких подпрограммах см. в разделе Подпрограмма BuildRequest драйвера класса хранилища.
Драйверы класса хранилища также передают IRP_MJ_SCSI запросы базовому драйверу порта хранилища. Такой запрос может поступать из драйверов фильтра хранилища.
Для IOCTL_SCSI_PASS_THROUGH запросов, описанных в разделе Обработка запросов Pass-Through SCSI, драйвер класса отвечает за настройку кода MinorFunction на IRP_MJ_DEVICE_CONTROL в расположении стека ввода-вывода драйвера порта IRP перед передачей запроса IRP_MJ_DEVICE_CONTROL в драйвер порта с помощью IoCallDriver.
Каждый драйвер класса хранения отвечает за разделение запросов на передачу (IRP_MJ_READ и (или) IRP_MJ_WRITE), превышающих возможности базового адаптера HBA. Следовательно, большинство драйверов классов также вызывают внутреннюю подпрограмму SplitTransferRequest , описанную в разделе Подпрограмма SplitTransferRequest драйвера класса хранилища, или реализуют те же функции в своих подпрограммах диспетчеризации для запросов на чтение и запись.
Дополнительные сведения об обработке запросов к периферийным устройствам хранилища см. в следующих разделах:
Обработка запросов Pass-Through SCSI
Обработка запросов PnP к периферийным устройствам хранилища
Обработка запросов на питание к периферийным устройствам хранилища