共用方式為


ACX 對象的摘要

本主題提供構成 ACX 音訊驅動程式基底之音訊類別延伸模組 (ACX) 物件的高階摘要。 如需 ACX 的一般概觀,請參閱 ACX 音訊類別延伸模組概觀

ACX 對像是 Windows Driver Framework (WDF) 物件 - WDFOBJECT。 如需 WDF 的詳細資訊,請參閱 Framework 物件簡介。 如需 WDF 物件的摘要,請參閱 Framework 物件的摘要。

ACX 物件階層

在ACX中(如同 WDF 中),驅動程式對像是根物件,而所有其他物件都是其子系/子系。 所有 ACX 物件都是驅動程式物件的子系,直接或間接透過其他 ACX 或 WDF 物件。 ACX 驅動程式可以在建立期間指定 ACX 物件的父代。 如果未指定父代,ACX 會使用預設父代,如下列各節所述。

圖表說明 ACX 物件的階層,其中 WDFDEVICE 位於頂端和主要 ACX 物件,例如下列線路和數據流。

建立非ACX WDF物件

除了 ACX 物件之外,音訊驅動程式還可以視需要建立及使用其他 WDF 物件。 如果驅動程式計劃列舉非 ACX 裝置,則應該使用與建立 ACX/WDF 裝置時建立的預設 WDF 子清單不同的子清單來執行此動作。 驅動程式可以使用 WdfChildListCreate 建立新的 WDF 子清單,如在函式驅動程式中建立裝置物件中所述。 如需 WDF 物件的一般資訊,請參閱 Windows Driver Foundation 的 Framework 物件WDF 架構和開發驅動程式簡介。 如需初始化 ACX 裝置的相關信息,請參閱 AcxDeviceInitialize

ACX 線路

AcxCircuit 代表使用者感知音訊裝置的部分或完整音訊路徑(喇叭、麥克風等)。 AcxCircuit 至少有一個輸入針腳和一個輸出針腳(ACXPIN),而且可能會匯總一或多個類似 AcxElements 的物件。 根據預設,AcxElements 會以相同的元件順序「已連線」。

音訊線路是 ACX 的核心建置組塊。 在新的 ACX 架構中,音訊驅動程式會建立一或多個 ACX 線路物件來代表部分或完整的音訊數據/控制路徑。 ACX 會將這些 ACX 線路物件組合在一起,以建立代表音訊端點的完整音訊路徑。 ACX 負責管理 ACX 線路及其相依性。 這些線路的組裝順序可以在初始化時以靜態方式定義,或在運行時間動態定義。

ACX 架構中的音訊端點是一或多個 ACX 線路的集合。 多重線路音訊路徑中的每個 ACX 線路都必須屬於不同的 PnP 裝置堆疊。 ACX 驅動程式可能會在初始化時建立一或多個線路,或在運行時間建立線路,例如在偵測新的音訊元件之後,或因為它以 ACX 註冊為特定線路類型的處理站,而 ACX 架構要求處理站元件建立該類型的新線路(請參閱本主題稍後所述的 ACX 線路管理員/Factory)。

  • AcxCircuit 可能有一或多個數據流。

  • AcxCircuit 有專用的 WDF 佇列。 如需 WDF 佇列的詳細資訊,請參閱 Framework Queue Objects

ACX 線路的 DIS 會在 acxcircuit.h 標頭中描述。

ACX 針腳

如同 WDM Portcls 音訊驅動程式,而 AcxPin 物件代表邏輯連線(而非實體連線),數據流會從系統通訊總線輸入配接器,或從配接器輸入系統通訊總線。

針腳的 DIS 會在 acxpin.h 標頭中描述。

ACX 數據流

AcxStream 代表特定線路硬體上的音訊串流。 AcxStream 可能會匯總一或多個類似 AcxElements 的物件。 根據預設,AcxElements 會以相同的元件順序「已連線」。 AcxStream 只會與一個 ACX 線路相關聯。

  • AcxStream 有專用的 WDF 佇列。 如需 WDF 佇列的詳細資訊,請參閱 Framework Queue Objects
  • AcxStream 支援不同的狀態。 這些狀態表示音訊何時流動(RUN 狀態)或未流動(PAUSE 或 STOP 狀態)。
  • 目前 ACX 支援兩種類型的數據流:非串流線路所使用的基本 ACX 資料流物件,以及串流線路所使用的 ACX RT 資料流物件。

數據流的 DIS 定義於 acxstreams.h 標頭中

ACX 目標

WdfIoTarget 是一種 WDF 抽象概念,可促進兩個不同的堆疊之間的通訊。 如需 WDF IO 目標的詳細資訊,請參閱 I/O 目標簡介。

  • 驅動程式會使用 AcxTargetCircuit 與不同堆疊公開的遠端線路通訊。 AcxTargetCircuit 是使用 WdfIoTarget 實作。
  • 驅動程式會使用 AcxTargetPin 與不同堆疊公開的遠端線路針腳進行通訊。 AcxTargetPin 是使用 WdfIoTarget 實作,以將訊息傳送至遠端釘選實體。
  • 驅動程式會使用 AcxTargetElement 與不同堆疊所公開的遠端線路項目通訊。 AcxTargetElement 是使用 WdfIoTarget 實作,以將訊息傳送至遠端元素實體。
  • 驅動程式會使用 AcxTargetStream 與不同堆疊公開的遠端線路串流通訊。 AcxTargetStream 是使用 WdfIoTarget 來實作,以建立遠端數據流並變更遠端數據流的狀態。
  • 驅動程式會使用 AcxTargetFactoryCircuit 與遠端線路處理站實例通訊。 AcxTargetFactoryCircuit 是使用 WdfTarget 實作,以將訊息傳送至遠端線路處理站。

上述每個 ACX 類型都支援屬性、方法和事件,以與遠端線路互動。 所有這些類型都是建置在 WdfIoTarget 物件之上。

目標的 DIS 定義於 acxtargets.h 標頭中

ACX 串流網橋

AcxStreamBridge 物件是由線路用來傳播串流建立、串流狀態轉換和線路區段之間的DRM設定。 這個物件只會用於多重線路(音訊複合)案例中。 驅動程式可能會將一或多個 ACXSTREAMBRIDGE 對象與網橋接產生關聯。 網橋接腳是 ACXPIN,會以邏輯方式連接到另一個線路上的對應 ACXPIN。

Stream 的 DIS 會在 acxstreams.h 標頭中描述。

ACX 音訊引擎節點線路配置範例

下圖說明 ACX 線路。 主機和卸除針腳是線路的輸入,具有可用於回應取消的回送針腳。 輸出可能是路由傳送至喇叭的網橋接腳。

此圖說明 ACX 線路的主機、卸除和回送針腳位於左側,以及透過音訊引擎節點路由傳送的網橋接點。

請注意,驅動程式不需要在線路/元素以與新增至線路相同的順序連線時,執行明確連接的步驟。

根據預設,ACX 會連接從線路 ACX 要求接收針腳開始的元素,並結束於轉譯和擷取裝置的線路裝置網橋接腳。

ACX 管理員

ACX 管理員用於系統工作,例如支援複合音訊端點。 這些類型的端點是由來自相同或不同廠商的一或多個驅動程式堆疊所管理。 用戶端可以在 ACPI 中預先設定此設定,或使用 ACX 管理員的 DDI。 ACX 管理員的 DIS 會在 acxmanager.h 標頭中描述。

ACX 物件包

ACX 物件包可用來儲存各種數據類型。 ACXOBJECTBAG 可以在各種 DIS 中當做自變數傳遞。 Object Bag 的 DIS 會在 acxmisc.h 標頭中描述。

ACX 物件摘要

下表列出所有 ACX 物件,並提供每個對象的相關一些基本資訊。

Handle 名稱 目的
ACXMANAGER ACX 管理員 ACX Manager 對象,用來管理及控制其他物件。
ACXOBJECTBAG 物件包 用於儲存數據以與物件搭配使用。
ACXEVENT ACX 事件 針對 KS (核心串流) 事件。
ACXEVENTDATA 事件資料 與事件相關聯的數據。
ACXPNPEVENT Pnp 事件 針對隨插即用事件。
ACXCIRCUIT 線路 本主題中所述的ACX線路。
ACXPIN 釘選 ACX pin 物件代表邏輯連線,如本主題所述。
ACXELEMENT 元素 用來代表任何可新增至 AcxCircuit 或 AcxStream 的專案,例如 AcxVolume
ACXAUDIOENGINE 音訊引擎 用於轉譯線路來表示 DSP 的 ACX 音訊引擎。
ACXSTREAMAUDIOENGINE 串流音訊引擎 在轉譯數據流中用來表示 DSP。
ACXKEYWORDSPOTTER 關鍵詞識別器 關鍵詞 spotter,用於擷取線路中的音訊串流中的關鍵詞偵測。
ACXVOLUME 體積 用來表示磁碟區、增益、提升。
ACXMUTE 靜音 用來表示靜音專案。
ACXJACK 千斤頂 用來代表音訊插孔或其他實體連接器。
ACXMICARRAYGEOMETRY 麥克風陣組幾何 用來代表麥克風陣組幾何,例如麥克風的位置。
ACXPEAKMETER 尖峰計量 當硬體支援尖峰計量功能時使用。
ACXSTREAM 串流 用來代表線路所建立的音訊串流,如本主題所述。
ACXDATAFORMAT 資料格式 數據格式代表音訊裝置所支援的數據格式。
ACXDATAFORMATLIST 數據格式清單 可供使用的音訊數據格式清單。
ACXTARGETCIRCUIT 目標線路 用來與不同堆疊公開的遠端線路通訊。
ACXTARGETPIN 目標釘選 用來與不同堆疊公開的遠端線路針腳進行通訊。
ACXTARGETELEMENT Target 項目 用來代表可新增至 AcxCircuit 或 AcxStream 的目標專案,例如 AcxVolume
ACXTARGETSTREAM 目標數據流 用來與不同堆疊公開的遠端線路數據流進行通訊。
ACXTARGETFACTORYCIRCUIT 目標線路處理站 用來與遠端線路的處理站通訊。
ACXSTREAMBRIDGE 串流網橋 由線路用來傳播數據流建立、狀態轉換和線路區段之間的DRM。
ACXCOMPOSITE 複合 用來代表多重線路/多堆棧/多廠商串流架構。
ACXCOMPOSITEFACTORY 複合處理站 建立複合音訊線路的處理站。
ACXFACTORYCIRCUIT 處理站線路 使用特定範本建立線路的處理站。
ACXCIRCUITMANAGER 線路管理員 用於建立動態線路的線路提供者。
ACXCOMPOSITETEMPLATE 複合範本 複合範本代表部分或完整的音訊系結。 複合範本可以有一或多個線路範本。
ACXCIRCUITTEMPLATE 線路範本 線路範本代表部分音訊路徑。
ACXAUDIOMODULE 音訊模組 針對自定義第三方新增功能。

下列 ACX 物件可用來儲存線路、數據流和線路處理站資訊。

Handle 目的
ACXCIRCUIT_INIT 儲存 ACX 線路初始化數據
ACXSTREAM_INIT 儲存 ACX 數據流初始化數據
ACXFACTORYCIRCUIT_INIT 儲存 ACX 線路處理站所使用的初始化數據

另請參閱

ACX 音訊類別擴充功能概觀

ACX 參考檔