UAC音频设备拓扑单元bSourceID错误导致设备启动失败(代码10)
2024-07-11
59
0
正常情况下,一个UAC类型的设备如麦克风或者扬声器,一般都会有三个或者两个拓扑节终端。
如对于麦克风,其拓扑结是:输入终端->音频控制特征单元->输出终端 ,然后再通过音频流接口描述符中通过bTerminalLink指 定输出终端,最终连到的是USB主机端。
而对于扬声器:拓扑结构是:输入终端->音频控制特征单元->输出终端,然后再通过音频流接口描述符中通过bTerminalLink指 定输入终端,这样表示音频数据流来源于USB主机端。
以上的拓扑结构其实是通过每个终端单元的bSourceID来连接的,而bSourceID的内容就是与其连接的上一个拓扑结构的ID,这个ID在每个拓扑结构单元的ID由bTerminalID指定。
UAC规定,这个ID在配置描述符中应惟一,不能重复。
但是,有的时候,可能因为我们指定了错误的源ID,导致拓扑结构连接失败。如我们的麦克风的一个示例如下:
- 输入终端[bTerminalID:1]
- 音频控制特征单元[bTerminalID:2]
- 输出终端[bTerminalID:3]
正常情况下,音频控制特征单元的bSourceID应为1,输出终端bSourceID应为2。这样组成了:
输入终端[bTerminalID:1] -> 音频控制特征单元[bTerminalID:2] -> 输出终端[bTerminalID:3]
但假设,我们将输入终端的bSourceID指定一个不存在的单元,如5。则会在Windows设备管理器中因指定了一个未知的设备而引起的拓扑结构连接失败,而导致音频设备无法正常使用。
这个错误状态如下:
翻译过来就是:
此设备无法启动。(代码10)
找不到对象。
找不到对象,这里指的是编号ID为5的源对象找不到。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936