Support for the Wireless Mobile Communication Device Class
In Windows Vista the USB Generic Parent Driver (Usbccgp.sys) provides support for devices that are included in the Universal Serial Bus (USB) Communication Device Class (CDC) and USB Wireless Mobile Communication Device Class (WMCDC).
The USB Wireless Mobile Communication Device Class (WMCDC) specification establishes a standard for connection, control, and content exchange between a host and a wireless mobile device (for example, a cell phone) when the device is connected to a USB port. WMCDC is an extension of the communication device class (CDC), which includes a broad range of communication and networking devices. This section describes the architecture that supports CDC and WMCDC devices in Windows operating systems.
WMCDC devices consist of multiple functions that are grouped into logical handsets. Most WMCDC devices have a single logical handset, but a device might have multiple logical handsets. Logical handsets typically include functions such as a data/fax modem, an object store, and a call control facility. A logical handset might also include supporting functions that are defined by other USB specifications such as the USB Audio Class specification, the USB Human Input Device (HID) class specification, and the USB Video Class specification.
The Windows WMCDC architecture uses native Windows drivers to manage the functions of your WMCDC device. For example, you can use the Windows telephony application program interface (TAPI) subsystem to manage the voice and data/fax modem functions of your device and the Windows network driver interface specification (NDIS) subsystem to manage the device's Ethernet LAN function. Furthermore, you can manage some functions, such as an Object Exchange Protocol (OBEX) function, in user-mode software with the assistance of the WinUSB (Winusb.sys).
The following figure shows an example driver stack for a WMCDC device.
In the preceding figure, the WMCDC device contains a single logical handset: an OBEX function and a modem function. A vendor-supplied INF file loads native Windows drivers to manage the modem. The OBEX function is managed by a vendor-supplied user-mode driver that runs in the User-Mode Driver Framework (UMDF). The user-mode driver uses the Windows Portable Devices (WPD) protocol to communicate with user applications and the interface that the WinUSB exports to communicate with the USB stack. In general, a vendor-supplied INF file will load a separate instance of Winusb.sys for each interface collection that uses Winusb.sys.
The USB stack does not automatically support WMCDC. You must provide an INF file that loads an instance of Usbccgp.sys. The INF file must contain an AddReg section that sets the EnumeratorClass registry value in the software key that is associated with Usbccgp.sys to a REG_BINARY value that is constructed from three numbers: 0x02, 0x00, and 0x 00. The following code example from an example INF file illustrates how to set EnumeratorClass to the appropriate value.
[CCGPDriverInstall.NT] Include=usb.inf Needs=Composite.Dev.NT AddReg=CCGPDriverInstall.AddReg [CCGPDriverInstall.NT.Services] Include=usb.inf Needs=Composite.Dev.NT.Services [CCGPDriverInstall.AddReg] HKR,,EnumeratorClass, 0x00000001,02,00,00
The value that you must assign to EnumeratorClass is constructed from three 1-byte binary values that are represented in the INF file by pairs of hexadecimal digits: 02, 00, and 00. These three numbers correspond to the values that the USB Implementers Forum has assigned to the CDC device class, CDC device subclass and CDC device protocol, respectively.
For more information about how to configure the registry to correctly enumerate your WMCDC device, see Enumerating Interface Collections on WMCDC.
The following topics further describe the WMCDC: