共用方式為


ACX 物件摘要

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

ACX 物件是 Windows 驅動程式架構 (WDF) 物件 - WDFOBJECT。 如需 WDF 的詳細資訊,請參閱 架構物件簡介。 如需 WDF 物件的摘要,請參閱 架構物件摘要

ACX 物件階層

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

說明 ACX 物件階層的圖表,WDFDEVICE 位於頂端,主要 ACX 物件 (例如線路和資料流程) 位於下方。

建立非 ACX WDF 物件

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

ACX 電路

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

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

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

  • AcxCircuit 可能有一或多個資料流程。

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

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

ACX 針腳

就像在 WDM Portcls 音訊驅動程式中一樣,AcxPin 物件代表邏輯連線 (,而不是實體連線) ,資料流程會透過這些連線從系統通訊匯流排進入配接器,或從配接器進入系統通訊匯流排。

Pin 的 DDI 是在 acxpin.h 標頭檔中描述。

ACX 串流

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

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

串流的 DDI 定義在 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 物件之上。

目標的 DDI 定義在 acxtargets.h 標頭中。

ACX 串流橋接器

線路會使用 AcxStreamBridge 物件來傳播資料流程建立、資料流程的狀態轉換,以及線路區段之間的 DRM 設定。 此物件僅用於多電路(音訊複合)案例。 驅動程式可能會將一或多個 ACXSTREAMBRIDGE 物件與橋接器針腳產生關聯。 橋接針腳是邏輯連線到其他電路上對應 ACXPIN 的 ACXPIN。

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

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

下圖說明 ACX 電路。 主機和卸載引腳是電路的輸入,並且有一個可以用於回聲消除的環回引腳。 輸出可能是一個橋接引腳,它將訊號路由到揚聲器。

圖表說明 ACX 線路,左側為主機、卸載和回送針腳,右側為橋接針腳,透過音訊引擎節點路由。

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

根據預設,ACX 會從電路的 ACX 要求接收針腳開始,並以電路的裝置橋接針腳結束,以連接渲染和擷取裝置中的元素。

ACX 管理員

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

ACX 物件袋

ACX 物件包可用來儲存各種資料類型。 ACXOBJECTBAG 可以傳遞為各種 DDI 中的引數。 物件包的 DDI 會在 acxmisc.h 標頭中描述。

ACX 物件摘要

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

處理 名稱 目標
ACXMANAGER ACX 管理員 ACX 管理員物件,用來管理和控制其他物件。
ACXOBJECTBAG 物品袋 用於儲存資料以與物件搭配使用。
ACXEVENT ACX 事件 針對 KS(Kernel-Streaming,核心串流)事件。
ACXEVENT資料 事件資料 與事件相關聯的資料。
ACXPNPEVENT Pnp 事件 適用於即插即用活動。
ACX電路 Circuit 本主題上述 ACX 線路。
ACXPIN ACX 針腳物件代表邏輯連線,如上述所示。
ACXELEMENT 元素 用來表示可新增至 AcxCircuit 或 AcxStream 的任何元素,例如 AcxVolume
ACXAUDIO引擎 音訊引擎 用於渲染電路中以代表 DSP 的 ACX 音訊引擎。
ACXSTREAMAUDIOENGINE 串流音訊引擎 用於渲染串流中,來代表 DSP。
ACXKEYWORDSPOTTER 關鍵字觀察員 關鍵字偵測器,用於擷取電路中,用於音訊串流中的關鍵字偵測。
ACXVOLUME 音量 用於表示音量、增益、提升。
ACXMUTE 靜音 用來表示靜音元素。
ACXJACK 千斤頂 用於表示音訊插孔或其他實體連接器。
ACXMICARRAYGEOMETRY 麥克風陣列結構 用於表示麥克風陣列幾何形狀,例如麥克風的位置。
ACXPEAKMETER 峰值計 當硬體支援尖峰計功能時使用。
ACXSTREAM Stream 用來表示電路所建立的音訊串流,如上所述。
ACXDATAFORMAT 數據格式 資料格式代表音訊裝置支援的資料格式。
ACXDATAFORMATLIST 資料格式清單 可供使用的音訊資料格式清單。
ACXTARGET電路 目標電路 用於與不同協定堆疊開放的遠端電路進行通訊。
ACXTARGETPIN 目標引腳 用於與通過不同堆疊顯露的遠程電路引腳進行通信。
ACXTARGETELEMENT 目標元素 用來代表可新增至 AcxCircuit 或 AcxStream 的目標元素,例如 AcxVolume
ACXTARGETSTREAM 目標流 用來與不同技術堆疊公開的遠端電路資料流進行通訊。
ACXTARGETFACTORYCIRCUIT 目標電路產業 用於與遠端電路工廠進行通訊。
ACXSTREAMBRIDGE 溪流橋 由電路用來在不同的電路段之間傳遞流創建、狀態轉換以及數位版權管理(DRM)。
ACXCOMPOSITE 複合 用於表示多電路/多堆疊/多供應商流架構。
ACX合成工廠 複合材料工廠 創建複合音頻電路的工廠。
ACXFACTORYCIRCUIT 工廠電路 使用特定範本建立電路的工廠。
ACXCIRCUITMANAGER 電路經理 用於動態線路建立的線路提供者。
ACXCOMPOSITE範本 複合範本 複合範本代表部分或完整的音訊繫結。 複合範本可以有一個或多個電路範本。
ACXCIRCUIT範本 電路模板 電路範本代表部分音訊路徑。
ACX AUDIO模組 音訊模組 用於自定義第 3 方插件功能。

下列 ACX 物件用於儲存線路、資料流和線路工廠資訊。

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

另請參閱

ACX 音訊類別擴充功能概觀

ACX 參考文件