USB接口
绪论
UCHARiSerialNumber;UCHARbNumConfigurations;
)USB—DEVICE_DESCRIPTOR, PUSB_DEVICE_DESCRIPTOR;
设备描述符的bLength域应等于18,bDescriptorType域应等于1以指出该结构是一个设备描述符。bcdUSB域包含该描述符遵循的USB规范的版本号(以BCD编码)。现在,设备可以使用值0x0100或Ox0110来指出它所遵循的是1.0版本还是1.1版本的USB规范。bDeviceCiass、bDeviceSubClass、bDeviceProtocoi指出设备类型。可能的设备类代码在USB规范中定义,USB所包括的类代码在表l一4中列出。独立设备类工作组为每个设备类定义子类和协议代码。例如,音频类有控制、流,和MIDI流接口的子类代码。大容量存储类为使用各种端点的数据传输方法定义了协议代码n1。
一般整个设备或仅在接口级指定一个类,但事实上,设备类、子类、和协议代码通常出现在接口描述符中而不是出现在设备描述符中。USB还为特殊类型的设备指定了一个特殊的设备类代码255。厂商可以使用这个代码指出其设备是一个非标准设备,并且在子类和协议域中填入厂商设定的值‘21。
设备描述符的bMaxPacketSizeO域给出了默认控制端点(端点O)上的数据包容量的最大值。每个设备都必须提供0号控制端点,由于USB规范并没有为该端点规定一个单独的端点描述符,所以这个域是唯一描述这个端点的地方。因为这个域在设备描述符的偏移7处,所以即使该端点使用最小的传输容量(8字节)主机也能读到这个域。一旦主机知道了端点0的最大传输容量,它就可以分块读出整个描述符‘21。
Vid和Pid域指定厂商代码和厂商专用的产品标识。bcdDevice指出设备的发行版本号(0x0100对应版本1.O)。当主机软件检测设备时,这三个域决定了主机应该装入哪个驱动程序。USB组织提供厂商代码,厂商提供产品代码‘21。
5