usb端点笔记
端点:端点是USB设备的唯一可识别部分,其是主机和设备之间的通信流的终点。是一个USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。(逻辑上)
接口:可以理解为一个功能。(物理功能)
配置:对接口的组合,在连接期间选定是那种组合。(逻辑上)

一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。
端点0,是设备的默认控制端点,在设备上电后就存在并可以使用,在Set Config之前所有的传输都是通过端点0传输的。 所有USB设备需要实现一个默认的控制方式, 它就是既能输入也能输出的端点0, Host通过这端点0获取设备的描述、配置、状态,对设备进行设置。
一个设备只有一个设备号,有若干端点,在一个配置中,不同接口的端点号不同,端点号是唯一的,就像是例子中的教室,可能在不同配置中,同一个端点属于了不同的接口,就像是一个教室,在不同的配置中可以是教室也可以是考场。但是其端点号不可改变。端点0不独立属于任何配置和任何接口,是归属于USB设备
一个设备有一个或多个配置,一个配置就是一个功能集合(即是接口的集合),一个接口就是一个功能,一个接口可以有一个或多个端点,一个设备最多有16个端点(即0-15),通过端点号区分(也就是 bEndpointAddress端点地址)
一个设备必须至少有一个端点0且一定是控制类型的端点。端点0不独立属于任何配置和任何接口,是归属于USB设备。
- 控制端点(Control Endpoint):所有USB设备都必须具有端点0,用于设备枚举、配置设置以及状态查询等控制操作。
- 中断端点(Interrupt Endpoint):主要用于周期性地发送小量且时间敏感的数据,如键盘、鼠标事件等。
- 批量端点(Bulk Endpoint):处理大量非实时的数据传输,适合文件传输、打印机作业等应用。
- 同步端点(Isochronous Endpoint):设计用于连续流式传输,例如音频和视频流,这类数据传输对带宽和定时要求严格。
复合设备(composite device):具有多个接口并由接口来实现功能的设备叫USB复合设备。

显示如下:

其根节点必是通过USB Composite Device(usbccgp.sys)来驱动,其子节点的硬件ID 必带MI_0X,并且所有设备其享一组PID和VID.
USB复合设备的配置描述符 一次获取完整后,再由系统驱动根据其接口功能的不同,而进行逻辑拆分组合,生成逻辑设备。
组合设备(compound device):多个USB通过HUB连接来实现多个功能的设备叫USB组合设备

显示如下:
