从 Windows 10 版本 1703 开始,Windows 随附 USB 音频 2.0 驱动程序。 它旨在支持 USB 音频 2.0 设备类。 驱动程序是 WaveRT 音频端口类微型端口。
驱动程序名为:usbaudio2.sys,关联的 inf 文件为 usbaudio2.inf。
驱动程序将在设备管理器中标识为“USB 音频类 2 设备”。 此名称将被 USB 产品字符串覆盖(如果可用)。
将兼容设备连接到系统时,将自动启用驱动程序。 但是,如果系统或 Windows 更新上存在第三方驱动程序,则会安装该驱动程序并覆盖类驱动程序。
如下所示,usbaudio2.sys 驱动程序适用于更广泛的 Windows USB 音频体系结构。
以下 USB 规范定义了 USB 音频,在本文予以了参考。
- USB-2 是指通用串行总线规范修订版 2.0
- ADC-2 是指音频设备 USB 设备类定义版本 2.0。
- FMT-2 是指音频数据格式规范版本 2.0。
USB-IF 是一个专门负责维护官方 USB 规范、测试规范和工具的小组。
驱动程序支持下面列出的格式。 将忽略一个备用设置,该设置指定在 FMT-2 中定义的另一种格式或未知格式。
类型 I 格式 (FMT-2 2.3.1):
- 每个样本含 8..32 位的 PCM 格式 (FMT-2 2.3.1.7.1)
- PCM8 格式 (FMT-2 2.3.1.7.2)
- IEEE_FLOAT 格式 (FMT-2 2.3.1.7.3)
类型 III 格式(FMT-2 2.3.3 和 A.2.3):
- IEC61937_AC-3
- IEC61937_MPEG-2_AAC_ADTS
- IEC61937_DTS-I
- IEC61937_DTS-II
- IEC61937_DTS-III
- TYPE_III_WMA
本部分介绍 USB 音频 2.0 驱动程序的功能。
驱动程序支持 ADC-2 3.13 中定义的所有实体类型。
每个终端实体在兼容的 USB 音频 2.0 硬件中都必须具有有效的时钟连接。 时钟路径可以选择包括时钟乘数和时钟选择器单位,并且必须以时钟源实体结尾。
驱动程序仅支持一个时钟源。 如果设备实现多个时钟源实体和一个时钟选择器,则驱动程序将使用默认选择的时钟源,并且不会修改时钟选择器的位置。
不支持具有多个输入引脚的处理单元 (ADC-2 3.13.9)。
不支持具有多个输入引脚的扩展单元 (ADC-2 3.13.10)。
不允许使用拓扑中的循环路径。
驱动程序支持以下终结点同步类型 (USB-2 5.12.4.1):
- 异步 IN 和 OUT
- 同步 IN 和 OUT
- 自适应 IN 和 OUT
对于异步 OUT 情况,驱动程序仅支持显式反馈。 必须在 AS 接口的相应备用设置中实现反馈终结点。 驱动程序不支持隐式反馈。
目前,对使用多个终结点的共享时钟的设备的支持有限。
对于自适应 IN,驱动程序不支持源转发终结点。 如果备用设置中存在此类终结点,将忽略该终结点。 驱动程序处理自适应 IN 流的方式与异步 IN 流相同。
设备创建的等时数据包的大小必须符合 FMT-2.0 部分 2.3.1.1 中指定的限制。 这意味着实际数据包大小与名义大小的偏差不得超过 +/- 一个音频槽(音频槽 = 声道计数样本)。
音频函数必须仅实现一个 AudioControl 接口描述符 (ADC-2 4.7) 和一个或多个 AudioStreaming 接口描述符 (ADC-2 4.9)。 不支持具有音频控制接口但不支持流式处理接口的函数。
驱动程序支持 ADC-2(部分 4)中定义的所有描述符类型。 以下小节提供有关某些特定描述符类型的注释。
有关此规范的详细信息,请参阅 ADC-2 4.9.2。
AS 接口描述符必须以无终结点(无带宽消耗)的备用设置零开头,并且必须在兼容 USB Audio 2.0 硬件中按升序指定其他备用设置。
驱动程序不支持其格式的备用设置将被忽略。
每个非零备用设置都必须指定一个等时数据终结点,并可以选择指定反馈终结点。 不支持无任何终结点的非零备用设置。
bTerminalLink 字段必须引用拓扑中的终端实体,并且其值在 AS 接口的所有备用设置中必须相同。
AS 接口描述符中的 bFormatType 字段必须与格式类型描述符 (FMT-2 2.3.1.6) 中指定的 bFormatType 相同。
对于类型 I 格式,在 AS 接口描述符的 bmFormats 字段中只能将一位设置为一。 否则,驱动程序将忽略格式。
为了节省总线带宽,一个 AS 接口可以实现多个具有相同格式的备用设置(就 bNrChannels 和 AS 格式类型描述符而言),但在等时数据终结点描述符中具有不同的 wMaxPacketSize 值。 对于给定的采样率,驱动程序会选择具有可满足数据速率要求的最小 wMaxPacketSize 的备用设置。
有关此规范的详细信息,请参阅 FMT-2 2.3.1.6。
存在以下限制:
有关此规范的详细信息,请参阅 ADC-2 4.10.1.2。
bmAttributes 字段中的 MaxPacketsOnly 标志不受支持,将被忽略。
bmControls、bLockDelayUnits 和 wLockDelay 字段将被忽略。
驱动程序支持 ADC-2(部分 5.2)中定义的控件请求的子集,并支持某些控件的中断数据消息 (ADC-2 6.1)。 下表显示了在驱动程序中实现的子集。
以下几个小节提供了有关控件和请求的其他信息。
有关此规范的详细信息,请参阅 ADC-2 5.2.5.1。
时钟源实体至少必须在兼容的 USB 音频 2.0 硬件中实现采样频率控件 GET RANGE 和 GET CUR 请求 (ADC-2 5.2.5.1.1)。
采样频率控件 GET RANGE 请求会返回子范围列表 (ADC-2 5.2.1)。 每个子范围都描述离散频率或频率范围。 必须通过将 MIN 和 MAX 字段设置为相应的频率,将 RES 设置为零来表示离散采样频率。 各个子范围不得重叠。 如果某个子范围与上一个子范围重叠,驱动程序会将其忽略。
实现单个固定频率的时钟源实体不需要实现采样频率控件 SET CUR。 它会实现 GET CUR,从而返回固定频率,并实现 GET RANGE,从而报告一个离散频率。
有关此规范的详细信息,请参阅 ADC-2 5.2.5.2
USB 音频 2.0 驱动程序不支持时钟选择。 该驱动程序使用默认选择的时钟源实体,并且从不发出时钟选择器控件 SET CUR 请求。 时钟选择器控件 GET CUR 请求 (ADC-2 5.2.5.2.1) 必须在兼容的 USB 音频 2.0 硬件中实现。
有关此规范的详细信息,请参阅 ADC-2 5.2.5.7。
驱动程序仅支持一个音量范围。 如果音量控件 GET RANGE 请求返回多个范围,则将忽略后续范围。
MIN 和 MAX 字段表示的音量间隔应该是 RES 字段中指定的步长大小的整数倍数。
如果功能单元实现单个声道控件和静音或音量的主控件,驱动程序将使用单声道控件并忽略主控件。
OEM 和 IHV 应根据提供的内置驱动程序测试其现有设备和新设备。
没有与内置 USB 音频 2.0 驱动程序关联的任何特定合作伙伴自定义。
此 INF 文件条目(在 Windows 版本 1703 更新中提供)用于标识内置驱动程序是否为通用设备驱动程序。
内置驱动程序将使用 usbaudio2.inf 注册以下兼容 ID。
请参阅子类类型的 USB 音频 2.0 规范。
带 MIDI 的 USB 音频 2.0 设备(上述子类 0x03)将 MIDI 函数枚举为加载了 usbaudio.sys(USB Audio 1.0 驱动程序)的单独多函数设备。
USB Audio 1.0 类驱动程序将此兼容 ID 注册到 wdma_usb.inf。
并且具有以下排除项:
由于 Windows 音频堆栈的限制,共享模式下不支持任意数量的声道(大于 8 个)。
对于 IHV 提供的第三方驱动程序 USB 音频 2.0 驱动程序,除非这些驱动程序更新驱动程序,以显式替代此行为并使用内置驱动程序,否则这些驱动程序将继续优先于其设备。
从 Windows 10 版本 1703 开始,IHV 创建具有一个或多个插孔的 USB 音频类 2.0 设备时,将能够将这些插孔描述为内置音频类 2.0 驱动程序。 当处理此设备的 KSPROPERTY_JACK_DESCRIPTION 时,内置驱动程序将使用提供的插孔信息。
插孔信息存储在注册表的设备实例项(HW 项)中。
下面介绍注册表中的音频插孔信息设置:
<tid> = 终端 ID (如描述符中定义)
<n> = 插孔编号 (1 ~ n)。
<tid> 和 <n> 的约定为:
- 从 10 开始(8, 9, 10,而不是 8, 9, a)
- 无前导零
- n 从 1 开始(第一个插孔是插卡 1,而不是插孔 0)
例如:
T1_NrJacks, T1_J2_ChannelMapping, T1_J2_ConnectorType
有关音频插孔的详细信息,请参阅 KSJACK_DESCRIPTION 结构。
可以通过多种方式设置这些注册表值:
- 通过使用自定义 INF 来包装内置 INF,以便设置这些值。
- 直接由硬件设备通过适用于 USB 设备的 Microsoft OS 描述符设置(请参阅以下示例)。 有关创建这些描述符的详细信息,请参阅面向 USB 设备的 Microsoft OS 描述符。
以下 USB Microsoft OS 描述符示例包含一个插孔的声道映射和颜色。 该示例适用于具有单个功能描述符的非复合设备。
IHV 供应商应将其扩展为包含插孔描述的任何其他信息。
如果驱动程序未启动,则应检查系统事件日志。 驱动程序会记录指示失败原因的事件。 同样,可以按照 Matthew van Eerde 的 Web 日志文章以旧式方式收集音频日志中所述的步骤手动收集音频日志。 如果失败可能表示驱动程序问题,请使用如下所述的反馈中心进行报告,并包括日志。
有关如何使用补充 TMF 文件读取 USB Audio 2.0 类驱动程序的日志的信息,请参阅有关 Matthew van Eerde Web 日志的使用反馈中心报告问题、包含日志和建议功能。 有关使用 TMF 文件的常规信息,请参阅使用 TMF 文件显示跟踪日志。
有关“音频服务未响应”错误和 USB 音频设备在 Windows 10 版本 1703 中不起作用的信息,请参阅 USB 音频未播放。
如果遇到此驱动程序的问题,请收集音频日志,然后按照使用反馈中心报告问题、包含日志和建议功能中概述的步骤来引起我们的注意。
此 USB 音频 2.0 类驱动程序由 Thesycon 开发,受 Microsoft 支持。
- USB 音频未播放
- Windows 驱动程序模型 (WDM)
- 音频驱动程序概述
- WaveRT 端口驱动程序
- 低延迟音频
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-qdgl/45823.html