USB接口
西安JE_z.大学硕士学位论文
UCHARbLength;
UCHARbDescriptorType;UCHARbInterfaceNumber;UCHARbAltemateSetting;UCHARbNumEndpoints;UCHARbInterfaceClass;UCHARbInterfaceSubClass;
.
UCHARbInterfaceProtocol;UCHARiInterface;
,USBINTERFACEDESCRIPTOR,*PUSBINTERFACEDESCRIPTOR;
bLength和bDescriptorType域应为9和4。
bInterfaceNumber和bAlternateSetting是索引值,用在SET_INTERFACE控制事务
中以指定要激活的接口。这些值可以是任意的,但习惯上,配置中的接口号从0开始,每个接口中的替换设置也是从0开始的。
bNumEndpoints域指出该接口有多少个端点,不包括端点0,端点0被认为是总存在的,并且是接口的一部分。
bInterfaceClass、bInterfaceSubClass、和bInterfaceProtocol域描述了接口提供的功能。一个非0的类代码应该是上面讨论的类代码中的一个,同时子类和协议代码也必须有与该类相类似的含义。这些域不允许有0值。最后,iInterface是一个串描述符的索引,0表示该接口无描述串。
端点描述符
接口可以没有或有多个端点描述符,它们描述了处理事务的端点。DDK中定义的端
点描述符结构如下:
typedefstruct_USB_ENDPOINT_DESCRIPTOR
{
UCHARbLength;
UCHARbDescriptorType;UCHARbEndpointAddress;UCHARbmAttributes;USHORT
wMaxPacketSize;
UCHARbInterval;
,USBENDPOINTDESCRIPTOR,木PUSBENDPOINTDESCRIPTOR;
bLength和bDescriptorType域应为7和5。bEndpointAddress域编码端点的方向性和端点号。例如,地址值0x82指出该端点是一个端点号为2的IN端点,而0x02地址指出~个端点号为2的OUT端点。除了端点0,两个端点可以有相同的端点号但方向相反。
8