音頻轉接器包含若干子裝置,用於連接外部音訊設備,例如喇叭和麥克風,使用者將設備插入轉接器的前面板或後面板音訊插孔。 每個子裝置都會服務特定的音訊插孔或插孔群組。
音訊驅動程式藉由呈現拓撲來描述每個子裝置,該拓撲基本上是子裝置內內部連接和處理元素的對應。 系統提供的 Windows API 模組和廠商提供的控制面板應用程式會使用拓撲資訊來判斷子裝置的功能,並識別其內部控制點。 如需詳細資訊,請參閱 公開篩選拓撲。
在 IUnregisterSubdevice 和 IUnregisterPhysicalConnection 介面之前開發的 WDM 音訊驅動程式大多具有靜態拓撲。 針對這些驅動程式,在配接器驅動程式建立迷你埠驅動程序物件來管理子裝置之後,該物件及其相關聯的子裝置會保存於配接器驅動程序物件的存留期。
不過,在動態設定的音訊配接器中,適配卡驅動程式可以在運行時間建立和刪除子裝置,以反映硬體組態中的變更,因為使用者將外部裝置插入音訊插孔並移除它們。 此行為可讓子裝置以邏輯獨立硬體功能的形式運作。 換句話說,每個子裝置都可以獨立啟動、設定和關閉其他子裝置。
每個子裝置都有一個內部拓撲,其中包含下列各項:
透過子裝置的數據路徑。
處理沿著數據路徑流動之數據流的拓撲節點(例如磁碟區控制)。
子裝置與相同配接器中其他子裝置的實體連線。
當配接器驅動程式動態移除子裝置時,它會釋放系結至子裝置內部拓撲的硬體資源。 接著,配接器驅動程式可以使用這些資源來建立具有可能不同拓撲的新子裝置。
設定新的音訊子裝置時,配接器驅動程式會將子裝置的驅動程式介面註冊為一或多個 裝置介面類別的實例,而 I/O 管理員會新增一或多個登錄專案,其中包含與介面類別和介面實例相關聯的符號連結。 若要存取子裝置,使用者模式用戶端會從登錄擷取符號連結,並將它當做呼叫參數傳遞給 CreateFile 函 式。 用戶端通常是 Windows API 模組,例如 Dsound.dll 或 Wdmaud.drv,或廠商提供的控制面板或音訊公用程式程式。 如需有關 CreateFile的詳細資訊,請參閱 Microsoft Windows SDK 文件。
當迷你埠驅動程式呼叫 IUnregisterSubdevice::UnregisterSubdevice 方法來移除子裝置時,PortCls 系統驅動程式 (Portcls.sys) 會告知 I/O 管理員從登錄中移除相關聯裝置介面的符號連結。 針對裝置介面移除事件註冊的元件會在移除介面時收到通知。
音訊配接器可以包含插孔存在線路,以在插入或移除音訊插孔時通知迷你埠驅動程式。 當使用者將插頭插入音訊插孔時,配接器驅動程式會將相關聯子裝置的裝置介面新增至註冊表。 當使用者從耳機插孔拔除插頭時,適配器驅動程式會從註冊表中移除對應的裝置介面。
支持動態拓撲的音訊配接器具有下列優點:
用戶易記
除非桌面喇叭、耳機和其他外部音訊裝置實際上插入音訊適配卡前端或後面板上的音訊插孔,否則系統不會將這些裝置呈現給音訊應用程式,以供使用。
省電
當使用者從耳機插孔移除插頭時,驅動程式可以關閉為該插孔服務的轉接器線路部分的電源。
可配置的
拿掉子裝置之後,驅動程式可以使用系結至子裝置內部拓撲的硬體資源,建立具有可能不同拓撲的新子裝置。