USB MSD. Часть 3. USB класс накопителей данных (перевод)


Поддержка в персональных компьютерах

Большинство операционных систем имеет в своём составе драйверы для работы с накопителями данных.


Windows

Windows 2000 и более новые операционные системы имеют в своём составе драйвер для USB накопителей, использующих BBB и CBI протоколы передачи. Операционная система загружает драйвер USB накопителя данных (usbstor.sys), когда в описателе нового устройства объявляется его принадлежность к поддерживаемому подклассу ("bInterfaceSubClass") накопителей данных. Usbstor.sys обслуживает обмен между низкоуровневым драйвером шины USB и драйвером класса накопителей данных. Операционная система назначает буквы дискам устройства и отображает их в окне "My Computer". Накопители данных не нуждаются в специальных INF-файлах, определяющих драйвер. В случае устройства из поддерживаемого операционной системой подкласса, который принадлежит классу накопителей, за загрузку драйвера отвечает файл "usbstor.inf".

Драйвер накопителей данных в Windows XP поддерживает устройства, принадлежащие подклассам ("bInterfaceSubClass") 0x02, 0x05, и 0x06. Поддержка для устройств с несколькими логическими накопителями (LUN) впервые появилась в Windows 2000 SP3.

Пользователи с правами администратора могут запускать приложения, которые используют для управления аппаратурой SCSI-команды, передающиеся через функцию API "IOCTL_SCSI_PASS_THROUGH". Для этого надо открыть устройство вызовом функции "CreateFile" с параметром доступа ("dwDesiredAccess") "GENERIC_READ" и "GENERIC_WRITE".

Одним из возможных непонятных вопросов, относящихся к работе накопителей данных в операционной системе Windows, является автозапуск. Эта опция позволяет операционной системе запускать программы, показывать видео или проводить другие действия сразу после появления сменного накопителя в системе. Для поддержки автозапуска на USB-диске должен находиться файл "autorun.inf", обозначающий запускаемое приложение (и, возможно, само приложение). Для операционных систем Windows, предшествующих XP SP2, в ответ на SCSI-команду "INQUIRY" диск должен сообщать о наличии несъёмного носителя. Подробнее о команде "INQUIRY" можно прочитать в части 6.


Linux

В Linux есть два драйвера, поддерживающих работу с USB-накопителями данных. Драйвер "usb-storage" (Linux/drivers/usb/storage) поддерживает высокопроизводительную работу с широкой гаммой устройств. Драйвер "ub" (Linux/drivers/block/ub.c) нацелен на надёжность, но работает медленнее и с меньшей номенклатурой устройств. "ub" драйвер поддерживает только BBB-протокол и блоковые устройства прямого дуступа (PDT = 0x00 - direct access block device), не пытается подстроиться под несовместимые устройства, использует свой собственный стек SCSI и ждёт завершения обработки каждого USB-запроса (USB request block - URB), прежде чем начать новый.

ПредпросмотрAttachmentSize
usb_msd_3.zip68.8 КБ