ACX 音频类扩展概述

本主题提供 ACX 音频类扩展的简单摘要。

ACX 框架利用 Windows 驱动程序框架生成

为了允许音频驱动程序更可靠,并为电脑用户提供最佳体验,音频类 eXtension (ACX) 现已推出。 ACX 为音频域定义 Windows 驱动程序框架 (WDF) 类扩展。 有关 WDF 的详细信息,请参阅框架对象简介。 ACX 中提供了许多 WDF 概念,例如 WDF IO 目标。 有关 WDF IO 目标的详细信息,请参阅 I/O 目标简介

ACX 是使用内核模式驱动程序框架 (KMDF) 而不是用户模式驱动程序框架 (UMDF) 生成的,以避免在流式传输时多次与从用户到内核的任务切换相关的任何延迟。 Portcls 音频驱动程序(当前旧模型)是基于 WDM 的基于内核模式的驱动程序。

使用 ACX 框架可以轻松地创建“开箱即用”的工作音频驱动程序。 例如,ACX 支持大部分设置的默认完成。 这使驱动程序能够更轻松地使用正确的设置,但仍允许自定义。

ACX 框架将音频概念公开为驱动程序可以与之交互的 WDF 对象(流、格式等)。 这可实现一致的编程体验,并启用更大的音频驱动程序开发人员社区。

ACX 目标

音频类扩展 (ACX) 具有以下目标。

  • 简化开发简单独立音频驱动程序所需的工作量和知识。
  • 减少第 3 方需要开发的代码量。 减少代码行可减少维护并简化调试。
  • 允许现有的上层用户模式客户端(服务和应用)按原样运行。
  • 简化音频堆栈驱动程序的电源 pnp 管理。
  • 不会影响整体性能,即没有额外的/明显的延迟。
  • 简化开发多堆栈音频驱动程序所需的工作量。
  • 允许第 3 方驱动程序指定在流式传输时要使用的锁定机制。
  • 使用 Microsoft 组件部署隔离解决方案,使驱动程序/APO 模块自包含且可重用。

ACX 体系结构

下图演示了 ACX 体系结构,其中显示了内核模式中的现有用户模式应用和 ACX 对象,以及堆栈底部的音频硬件。 除了 ACX 对象之外,驱动程序开发人员还有权访问 WDF 对象,以利用其驱动程序代码,例如电源管理。

说明 ACX 体系结构的关系图,其中显示了在内核模式下使用 WDF 和 ACX 对象的用户和内核模式,以及堆栈底部的音频硬件。

ACX 与现有音频驱动程序共存

ACX 旨在与现有音频驱动程序共存,以便灵活迁移到新的 ACX 驱动程序。

  • 退出、未更改(基于 WDM)的音频微型端口驱动程序的二进制兼容性由现有的旧 Windows 类驱动程序维护。
  • ACX 目前仅支持基于 WaveRT 的流式处理。
  • 旧版 PortCls/Ks 和新 ACX 堆栈并行运行。 使用 ACX 不会强制第 3 方将其当前音频驱动程序移植到新模型。 由于该模型提供了许多优势,第 3 方可能会自愿选择将其用于其未来的音频开发。

ACX 常见定义

线路 - 表示部分或完整音频路径的驱动程序组件。 线路表示现有终结点及其功能。

- 创建用于表示线路创建的音频流的驱动程序组件。 流由根据父线路的元素创建的元素列表组成。

流线路 - 多堆栈体系结构(部分音频路径)中的线路,该线路直接与上层用户模式流式处理服务进行交互。

核心线路 - 提供音频终结点设备的标识的多堆栈体系结构(部分音频路径)中的线路。

元素 - 线路或流的子组件,表示下划线硬件的音频功能。 可以是 DSP 线路上的音量、静音、插孔元素或模块元素,等等。

终结点音频路径 - 连接在一起以表示单个音频终结点的单个线路对象或线路对象组。 线路对象必须来自属于相同或不同驱动程序的不同设备堆栈。

ACX 对象摘要

有关基本 ACX 对象的摘要,请参阅 ACX 对象摘要

示例 ACX 驱动程序

一个简单的 ACX 示例驱动程序可用于在开发分支中的 GitHub 上查看和下载 - https://github.com/microsoft/Windows-driver-samples/tree/develop/audio/Acx/Samples

驱动程序验证程序

建议对所有 Windows 驱动程序(包括 ACX 驱动程序)使用驱动程序验证程序。 使用驱动程序验证程序来显示潜在错误、降低能耗并提高驱动程序的可靠性。 有关详细信息,请参阅驱动程序验证程序

ACX 多堆栈跨驱动程序标准化跨通信

音频路径很常见,会经过不同驱动程序堆栈处理的多个硬件组件,以便创建完整的音频体验。 系统通常让不同的音频技术供应商实现 DSP、CODEC 和 AMP 功能。

在没有明确定义的标准的多堆栈体系结构中,每个供应商被迫定义自己的专有接口和通信协议。 ACX 的目标是通过获取这些堆栈之间的同步所有权并为驱动程序提供简单的可重用模式来促进多堆栈音频驱动程序的开发。

有关详细信息,请参阅 ACX 多堆栈跨驱动程序通信

ACX 参考文档

有关标头级别 ACX 参考文档的信息,请参阅 ACX 参考文档

另请参阅

ACX 对象摘要

ACX 参考文档

ACX 版本信息

ACX 日志记录和调试

ACX 目标和驱动程序同步

ACX IO 请求数据包 IRP

ACX 设备枚举

ACX 电源管理

ACX 多堆栈跨驱动程序通信

ACX 流式处理