USB Host Mass Storage Client Driver (Windows Embedded CE 6.0)
The universal serial bus (USB) host mass storage client driver is in the %_WINCEROOT%\Public\Common\Oak\Drivers\USB\Class\Storage directory. The dynamic-link libraries (DLLs) for the driver are Usbmsc.dll and Usbdisk6.dll. This driver is not backward compatible. Add the USB host mass storage client driver to your OS design from the Microsoft® Platform Builder Catalog or by setting SYSGEN_USB_STORAGE.
The USB mass storage client adheres to the USB mass storage class specifications. For more information about the USB specification or the USB printer class specification, see the USB Web site.
This driver enables numerous USB-based storage devices on Windows Embedded CE operating systems, such as hard disks, floppy disks, CD-ROM drives, ATA Flash Readers, and so on. The goal is to write the USB storage class driver as a block device driver that plugs into an appropriate file system driver at the upper edge so that applications can use it seamlessly.
The USB storage class driver can support multiple USB storage devices connected to the Windows Embedded CE OS. The storage driver exposes the stream interface. For more information, see Stream Interface Drivers.
The following diagram shows the components of the USB storage class driver in the Windows Embedded CE–based driver architecture.
The USB host mass storage client driver is implemented as a USB client driver. It exposes the USBInstallDriver, USBDeviceAttach, and USBUnInstallDriver entry points to support Plug and Play functionality.
The USB storage driver is a block device driver and exposes the stream interface using the prefix DSK. Hence all USB storage devices are exposed to the system as a DSKx: device file type.
The driver interfaces with an appropriate file system driver at the upper edge, such as FATFS or UDFS. This way no changes are needed to the upper level application architecture in to use the USB storage driver.
The USB transport protocol driver, Usbmsc.dll, supports the three defined protocols in the Mass Storage Class Specification overview. For more information, see the Mass Storage Class Bulk-Only Transport Specification and the Control/Bulk/Interrupt (CBI) Transport rev 1.0 Specification.
The USB storage driver, Usbdisk6.dll, supports the SCSI (0x06h), UFI (0x04h) and ATAPI (0x02h) command block bInterfaceSubClass defined in the Mass Storage Class Specification overview. For more information, see the appropriate Command Block Specification.
The following list shows the limitations and known issues with the storage class driver:
Because the driver currently does not support DVD technology, DVD devices will not work with the Windows Embedded CE–based driver.
USB devices that claim control, bulk, and interrupt (CBI) transport, but do not use the interrupt endpoint take a while to time-out during driver loading. LaCie USB devices are an example.
The driver interacts with the serial numbers, which must be present, static, and unique.
Some USB mass storage class devices are not recognized because they do not fully comply with the USB specification.
These devices can be loaded using the vendor identifier (VID) and product identifier (PID) combination, and then Usbmsc.dll reads its bInterfaceSubClass and bInterfaceProtocol from the host's registry or you provide this information.