本文引用地址://m.amcfsurvey.com/article/201612/330287.htm2.接口描述符
//定义标准的接口描述符结构
typedef struct _INTERFACE_DESCRIPTOR_STRUCT
{
BYTE bLength;//接口描述符的字节数大小
BYTE bDescriptorType;//接口描述符的类型编号
BYTE bInterfaceNumber;//该接口的编号
BYTE bAlternateSetting;//备用的接口描述符编号
BYTE bNumEndpoints;//该接口使用的端点数,不包括端点0
BYTE bInterfaceClass;//接口类型
BYTE bInterfaceSubClass;//接口子类型
BYTE bInterfaceProtocol;//接口遵循的协议
BYTE iInterface;//描述该接口的字符串索引值
}
INTERFACE_DESCRIPTOR_STRUCT, * pINTERFACE_DESCRIPTOR_STRUCT;
4.端点描述符
//定义标准的端点描述符结构
typedef struct _ENDPOINT_DESCRIPTOR_STRUCT
{
BYTE bLegth;//端点描述符字节数大小
BYTE bDescriptorType;//端点描述符类型编号
BYTE bEndpointAddress;//端点地址及输入输出属性
BYTE bmAttributes;//端点的传输类型属性
WORD wMaxPacketSize;//端点收、发的最大包大小
BYTE bInterval;//主机查询端点的时间间隔
}
ENDPOINT_DESCRIPTOR_STRUCT, * pENDPOINT_DESCRIPTOR_STRUCT;
下面是一个配置描述符集合的定义
typedef struct _CON_INT_ENDP_DESCRIPTOR_STRUCT
{
CONFIGURATION_DESCRIPTOR_STRUCT configuration_descriptor;
INTERFACE_DESCRIPTOR_STRUCTinterface_descritor;
ENDPOINT_DESCRIPTOR_STRUCTendpoint_descriptor[ENDPOINT_NUMBER];
}CON_INT_ENDP_DESCRIPTOR_STRUCT;
配置描述符集合的示例
code CON_INT_ENDP_DESCRIPTOR_STRUCT con_int_endp_descriptor=//配置描述符集合
{
//configuration_descriptor//配置描述符
{
sizeof(CONFIGURATION_DESCRIPTOR_STRUCT),//配置描述符的字节数大小,这里为9
CONFIGURATION_DESCRIPTOR,//配置描述符类型编号,配置描述符为2
(sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+
sizeof(INTERFACE_DESCRIPTOR_STRUCT)+
sizeof(ENDPOINT_DESCRIPTOR_STRUCT)*ENDPOINT_NUMBER)*256+
(sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+
sizeof(INTERFACE_DESCRIPTOR_STRUCT)+
sizeof(ENDPOINT_DESCRIPTOR_STRUCT)*ENDPOINT_NUMBER)/256,//配置描述符集合的总大小
0x01,//只包含一个接口
0x01,//该配置的编号
0x00,//iConfiguration字段
0x80,//采用总线供电,不支持远程唤醒
0xC8//从总线获取最大电流400mA
},
//interface_descritor//接口描述符
{
sizeof(INTERFACE_DESCRIPTOR_STRUCT),//接口描述符的字节数大小,这里为9