Mass Storage Device Compliance

Apple provides mass storage device drivers in the transport driver layer that support various device specifications. In order for your device to work with these drivers, it must comply with the appropriate specifications. This chapter describes device compliance and lists the logical unit and protocol services drivers Apple provides.

The concept of device compliance has no meaning in the device services layer. The generic block storage driver treats the device as a storage space and media filter-scheme drivers work with media present in the device; neither makes any assumptions about underlying transport specifications or implementation. For more information about how to develop your own filter-scheme driver, see Filter-Scheme Driver Matching and Developing a Filter Scheme.

Device Compliance

Apple provides logical unit and protocol services drivers at the transport driver layer of the mass storage driver stack (shown in Figure 1-2). These drivers will drive any mass storage device that complies with the supported specifications.

There are two areas in which a device must be compliant in order to partake of the services of the provided drivers:

SCSI command set implementation compliance means that a device’s firmware processes commands as documented in a SCSI Architecture Model shared command set specification. For example, if a multimedia device processes commands as defined by the SCSI multimedia command set specification, it is considered compliant and the Apple-provided IOSCSIPeripheralDeviceType05 driver will drive it successfully.

Compliance with a physical interconnect transport protocol means that a device sends and receives commands according to the protocol defined by the bus it’s on. For example, in order for a USB device to be compliant with the USB mass storage class, it must comply with one of the subclasses defined by the USB Mass Storage Class Specification. The Apple-provided IOUSBMassStorageClass protocol services driver will drive such a device successfully.

Available Mass Storage Drivers

For SCSI command set implementation-compliant devices, Apple provides four logical unit drivers that support the following specifications:

For physical interconnect transport protocol-compliant devices, Apple provides protocol services drivers that support the following bus transport protocols:

If your device is compliant with both a SCSI Architecture Model shared command set specification and a physical interconnect transport protocol, you will not have to write your own driver for it. If, however, your device is not compliant with these specifications or protocols, you will need to subclass the appropriate Apple-provided driver to address the difference. Similarly, if your device provides additional functionality at the command set implementation or bus transport level, you will need to develop a subclass that supports the new feature.