Chapter 16
codes in the interface descriptors. When a single function uses multiple inter-
faces, a device can use an interface association descriptor or a class-specific
method to identify the interfaces associated with a function.
CDC differs from other classes because it defines a code for bDeviceClass (02h)
in the device descriptor. In theory, this difference shouldn’t present a problem
for composite devices. The union functional descriptor defines which interfaces
belong to the CDC function, and the host can assume that any additional
interface descriptors belong to independent functions. In practice, however, the
drivers in earlier Windows editions aren’t always capable of loading the drivers
correctly for composite devices that contain CDC functions.
"
#
Under Windows Vista, a composite device with a CDC virtual COM-port
function can use an interface association descriptor (IAD) to identify the inter-
faces that belong to the CDC function. Windows can then identify and load
the correct drivers for all of the composite device’s functions. Figure 16-2
shows the descriptors for an example composite device of this type.
Table 16-7 shows the contents of the IAD as defined in the USB 2.0 engineer-
ing change notice (ECN) Interface Association Descriptors. To inform the host
that the device uses an IAD, the device descriptor should use the values in Table
[DriverService]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys
[Strings]
LAKEVIEW="Lakeview Research LLC"
MFGNAME="Lakeview Research LLC"
DESCRIPTION="USB COM Port"
SERVICE="USB COM-port Driver"
Listing 16-1: An INF file for a generic USB virtual COM port using the CDC
drivers (Sheet 2 of 2).