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


Обработка запросов к периферийным устройствам хранилища

Для всех запросов, требующих выполнения драйвера порта хранилища запроса через базовую шину, драйвер класса должен настроить 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 к периферийным устройствам хранилища

Обработка запросов на питание к периферийным устройствам хранилища

Запросы хранилища очередей