USB2.0 接口关联描述符 IAD
2026/4/3 3:17:18 网站建设 项目流程

接口关联描述符(Interface Association Descriptor,IAD)是USB 2.0 ECN补充规范中引入的关键描述符,用于解决多接口设备的识别问题。

一、为什么需要IAD?(历史背景)
在早期USB规范中,一个"功能"(如打印机、存储设备)通常只对应一个接口。但复杂设备(如CDC虚拟串口、USB音频、摄像头)需要多个接口协同工作:

CDC设备:需要通信类接口(处理AT命令) + 数据类接口(传输数据)

USB音频:需要音频控制接口 + 音频数据流接口
问题:Windows 2000/XP及更早系统无法识别这些接口属于同一个功能,会尝试为每个接口加载独立驱动,导致设备无法正常工作。
解决方案:IAD明确告诉主机: "这些接口是一伙的,属于同一个功能,请用同一个驱动处理" 。

二、IAD结构详解:

三、结合代码分析

// CDC设备#1的IAD 0x08, // bLength 0x0B, // bDescriptorType: IAD 0x00, // bFirstInterface: 从接口0开始 0x02, // bInterfaceCount: 包含2个接口(0和1) 0x02, // bFunctionClass: CDC类 0x02, // bFunctionSubClass: ACM抽象控制模型 0x01, // bFunctionProtocol: AT命令协议 0x02 // iFunction: 功能字符串索引

"接口0和接口1是绑定的,它们共同构成一个CDC虚拟串口设备,请加载单个CDC驱动来管理这两个接口"

接口0和接口1指的是接口描述符。

四、IAD工作原理图解

无IAD时的混乱情况:

有IAD时候:

五,使用规则:

1. 设备描述符必须声明IAD支持

// 设备描述符中必须设置:
0xEF, // bDeviceClass: 复合设备类(Miscellaneous)
0x02, // bDeviceSubClass: 通用IAD
0x01, // bDeviceProtocol: 接口关联描述符

如果不这样设置,Windows会忽略IAD!

2.IAD必须位于关联接口之前

3. 接口编号必须连续

bFirstInterface = 0
bInterfaceCount = 2
→ 必须包含接口 0 和 1

六、常见应用场景

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询