Chapter 7
164
ported class will likely be compatible with a driver added in a future edition of
the operating system.
#RRTQXGF5RGEKHKECVKQPU
The USB-IF sponsors device working groups that develop class specifications.
The defined classes cover most common device functions. Table 7-1 shows the
classes with approved specifications. The hub class is defined in the main USB
2.0 and USB 3.0 specifications rather than in a separate document. Every host
must support the hub class because the host requires a root hub to do any com-
munications. Chapter 4 listed the defined class codes for device and interface
descriptors.
Windows provides drivers for many classes. As Windows and the class specifica-
tions have evolved, the number of supported classes and the completeness of
support for those classes has improved. For some classes, such as the device
firmware upgrade class, Windows doesn’t provide a driver even though the spec-
ification has been available for many years. Table 7-2 shows the support for
each class under different Windows editions.
'NGOGPVUQHC%NCUU5RGEKHKECVKQP
A class specification defines the number and type of required and optional end-
points for devices in the class. The document may also define formats for data
to be transferred including application data and status and control information.
Some class specifications define uses for the data being transferred. For exam-
ple, the HID class has usage tables that define how to interpret data sent by
keyboards, mice, and joysticks. Some classes use USB to transfer data in a for-
mat defined by another specification. An example is the SCSI commands used
by mass-storage devices.
A class specification can define values for fields in standard descriptors and may
also define class-specific descriptors, interfaces, and control requests. For exam-
ple, the device descriptor for a hub includes a bDeviceClass value of 09h to
indicate that the device belongs to the hub class. The hub must have a class-spe-
cific hub descriptor with bDescriptorType = 29h. Hubs must also support
class-specific requests. For example, when the host sends a Get Port Status
request to a hub with a port number in the Index field, the hub responds with
status information for the port. A class may also require a device to support spe-
cific endpoints or comply with tighter timing for standard requests. Chapter 4
showed how the device or interface descriptor declares a class.