ACX 音訊類別擴充功能概觀

本主題提供 ACX 音訊類別延伸模組的高階摘要。

ACX 架構建置在 Windows 驅動程式架構之上

為了讓音訊驅動程式更可靠,並提供計算機使用者的最佳體驗,音訊類別 eXtension (ACX) 現在可在早期預覽中提供。 ACX 會定義音訊網域的新 Windows Driver Framework (WDF) 類別延伸模組。 如需 WDF 的詳細資訊,請參閱 Framework 物件簡介。 ACX 提供許多 WDF 概念,例如 WDF IO 目標。 如需 WDF IO 目標的詳細資訊,請參閱 I/O 目標簡介。

ACX 是使用核心模式驅動程式架構 (KMDF) 來建置,而不是使用者模式驅動程序架構 (UMDF),以避免在串流時多次將工作切換為核心模式的相關延遲。 Portcls 音訊驅動程式,目前的舊版模型,是 WDM,核心模式型驅動程式。

使用 ACX 架構可讓您輕鬆地建立現成可用的音訊驅動程式。 例如,ACX 支援大部分設定的預設完成。 這可讓驅動程式更輕鬆地使用正確的設定,但仍允許自定義。

ACX 架構會將音訊概念公開為 WDF 對象,驅動程式可以與之互動(數據流、格式等)。 這可讓您提供一致的程式設計體驗,並啟用較大的音訊驅動程序開發人員社群。

注意

ACX 標頭和連結庫不包含在 WDK 10.0.22621.2428 中(2023 年 10 月 24 日發行),但可在舊版中取得,以及 WDK 的最新 (25000 系列組建) Insider Preview。 如需 WDK 預覽版本的詳細資訊,請參閱 安裝 Windows 驅動程式套件 (WDK) 的預覽版本。

ACX 目標

音訊類別延伸模組 (ACX) 具有下列目標。

  • 簡化開發簡單獨立音訊驅動程式所需的工作和做法。
  • 減少第三方需要開發的程式代碼數量。 較少的程式代碼行會減少維護,並讓偵錯更容易。
  • 允許現有的上層使用者模式用戶端(服務和應用程式)依現狀執行。
  • 簡化音訊堆疊驅動程式的power-pnp管理。
  • 不會影響整體效能,亦即沒有額外的/明顯的延遲。
  • 簡化開發 多堆疊音訊驅動程式所需的工作。
  • 允許第三方驅動程式指定串流時要使用的鎖定機制。
  • 使用 Microsoft 元件部署隔離解決方案,讓驅動程式/APOs 模組獨立且可重複使用。

ACX 架構

此圖說明 ACX 架構,其中顯示核心模式和堆疊底部音訊硬體中現有的使用者模式應用程式和 ACX 物件。 除了 ACX 物件之外,驅動程式開發人員還能夠存取 WDF 物件,以利用其驅動程式程式代碼,例如電源管理。

說明 ACX 架構的圖表,顯示具有 WDF 和 ACX 物件在核心模式中的使用者和核心模式,以及堆疊底部的音訊硬體。

ACX 與現有的音訊驅動程式共存

ACX 的設計目的是要與現有的音訊驅動程式共存,以允許彈性地移轉至新的 ACX 驅動程式。

  • 現有舊版 Windows 類別驅動程式會維護結束的二進位相容性、未變更的 (WDM 型) 音訊迷你埠驅動程式。
  • ACX 目前僅支援以 WaveRT 為基礎的串流。
  • 舊版 PortCls/Ks 和新的 ACX 堆疊會並存執行。 使用 ACX 不會強制第三方將其目前的音訊驅動程式移植到新的模型。 由於模型提供許多優點,第三方可能會自願選擇將其用於其未來的音訊開發。

ACX 通用定義

線路 - 代表部分或完整音訊路徑的驅動程式元件。 線路代表現有的端點及其功能。

Stream - 建立來代表線路所建立音訊數據流的驅動程式元件。 Stream 是由根據父線路的 Elements 所建立的元素清單所組成。

串流線路 - 直接與上層使用者模式串流服務介面的 多堆疊 架構(部分音訊路徑)中的線路。

核心線路 - 提供音訊端點裝置身分識別的 多堆疊 架構(部分音訊路徑)中的線路。

元素 - 線路或 Stream 的子元件,代表底線硬體的音訊功能。 這可能是 Volume、Mute 或 Jack 元素,或是 DSP 線路上的 Module 元素等等。

端點音訊路徑 - 連接在一起的單一或一組 Circuit 物件,以代表單一音訊端點。 Circuit 對象必須來自屬於相同或不同驅動程式的不同裝置堆疊。

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 串流