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


Общие сведения о драйверах класса хранилища

Драйвер класса хранения использует хорошо установленный интерфейс класса/порта SCSI для управления запоминающей устройством такого типа на любой шине, для которой система предоставляет драйвер порта хранения (в настоящее время SCSI, IDE, USB и IEEE 1394). Конкретная шина, к которой подключено запоминающее устройство, прозрачна для драйвера класса хранения.

Любой драйвер класса хранения обрабатывает запросы ввода-вывода от пользовательских приложений или драйверов более высокого уровня, создавая блоки запросов SCSI (SRB), содержащие блоки дескрипторов команд (CDB), и отправляя их через любые промежуточные драйверы фильтров в базовый драйвер порта хранилища.

Драйвер класса хранения не предоставляет сведения об адресации в SRB. Вместо этого драйвер порта (или драйвер с более низким уровнем) отвечает за любую требуемую адресацию. Драйвер порта хранилища преобразует srb в формат, необходимый для базового адаптера шины узла (HBA), который может быть адаптером шины узла SCSI или 1394, контроллером интегрированной среды разработки или другим таким оборудованием, и выдает на устройство команды. В комплекте драйверов Windows (WDK) термин "HBA" означает любой такой базовый адаптер или контроллер.

Для диспетчера ввода-вывода и любых драйверов более высокого уровня, размещенных над драйвером класса хранения, большинство драйверов класса хранения являются стандартными промежуточными драйверами в режиме ядра. Таким образом, каждый драйвер класса должен иметь подпрограмму DriverEntry, процедуру AddDevice, подпрограмму Unload, одну или несколько процедур IoCompletion, а также подпрограммы DispatchPnP и DispatchPower для обработки Plug and Play и энергопотребления IRP.

Драйвер класса хранения также должен иметь подпрограмму DispatchSystemControl для обработки irp управления системой и может иметь любую другую стандартную подпрограмму драйвера более высокого уровня, например подпрограмму StartIo , как определено конструктором драйверов. Дополнительные сведения о подпрограммах драйвера для управления системой и стандартного режима ядра см. в разделе Стандартные процедуры драйвера.

Для диспетчера PnP драйвер класса хранения является драйвером функций, то есть драйвером, который управляет отдельным устройством. Драйвер класса хранения также может выступать в качестве драйверов шины, перечисляя дочерние устройства своих устройств. Например, драйвер класса для секционированного мультимедийного устройства, такого как диск, возвращает список PDO, представляющих его разделы. Каждое такое PDO может быть адресовано как целевое устройство и обслуживаться с помощью собственного драйвера класса.

Примечание

Драйвер для устройства SCSI, например принтера или сканера, должен быть реализован, как описано в этом разделе. Драйвер для такого устройства SCSI использует один и тот же интерфейс класса или порта SCSI для управления своим устройством и несет те же обязанности по обработке IRP, созданию SSP и отправке их в базовый драйвер порта, как и драйвер для запоминающих устройств.