共用方式為


管理動態拓撲

音訊配接器包含一些用於維護外部音訊裝置的子裝置,例如喇叭和麥克風,使用者插入介面卡的前端或後端面板音訊插接器。 每個子裝置都會服務特定的音訊插接器或插孔群組。

音訊驅動程式藉由呈現拓撲來描述每個子裝置,這些拓撲基本上是內部連線的對應,以及子裝置內的處理專案。 系統提供的 Windows API 模組和廠商提供的控制台應用程式會使用拓撲資訊來判斷子裝置的功能,以及識別其內部控制點。 如需詳細資訊,請參閱 公開篩選拓撲

在 IUnregisterSubdeviceIUnregisterPhysicalConnection介面之前開發的 WDM 音訊驅動程式大多具有靜態拓撲。 針對這些驅動程式,在配接器驅動程式建立迷你埠驅動程式物件以管理子設備之後,該物件及其相關聯的子裝置會保存于配接器驅動程式物件的存留期。

不過,在動態設定的音訊配接器中,配接器驅動程式可以在執行時間建立和刪除子裝置,以反映硬體組態中的變更,因為使用者將外部裝置插入音訊插接器並移除它們。 此行為可讓子裝置以邏輯獨立硬體功能的形式運作。 換句話說,每個子裝置都可以獨立啟動、設定和關閉其他子裝置。

每個子裝置都有一個內部拓撲,其中包含下列各項:

  • 透過子裝置的資料路徑。

  • 例如,拓撲節點 (,磁片區控制) 處理沿著資料路徑流動的資料流程。

  • 子裝置與相同配接器中其他子裝置的實體連線。

當配接器驅動程式動態移除子裝置時,它會釋放系結至子裝置內部拓撲的硬體資源。 接著,配接器驅動程式可以使用這些資源來建立具有可能不同拓撲的新子裝置。

設定新的音訊子裝置時,配接器驅動程式會將子裝置的驅動程式介面註冊為一或多個 裝置介面類別別的實例,而 I/O 管理員會新增一或多個登錄專案,其中包含與介面類別別和介面實例相關聯的符號連結。 若要存取子裝置,使用者模式用戶端會從登錄擷取符號連結,並將它當做 CreateFile 函式的呼叫參數傳遞。 一般而言,用戶端是 Windows API 模組,例如Dsound.dll或 Wdmaud.drv,或是廠商提供的控制台或音訊公用程式程式。 如需CreateFile的詳細資訊,請參閱Microsoft Windows SDK檔。

當迷你埠驅動程式呼叫 IUnregisterSubdevice::UnregisterSubdevice 方法來移除子裝置時,PortCls 系統驅動程式 (Portcls.sys) 會指示 I/O 管理員從登錄中移除相關聯裝置介面的符號連結。 在移除介面時註冊裝置介面移除事件的元件會收到通知。

音訊配接器可以包含插孔存線上路,以在插入或移除音訊插接器時通知迷你埠驅動程式。 當使用者將外掛程式插入音訊插接器時,配接器驅動程式會將相關聯子裝置的裝置介面新增至登錄。 當使用者從音訊插接器移除外掛程式時,配接器驅動程式會從登錄中移除對應的裝置介面。

支援動態拓撲的音訊配接器有下列優點:

  • 使用者易記

    除非桌面喇叭、耳機和其他外部音訊裝置實際插入音訊介面卡前端或後端面板上的音訊插接器,否則系統不會將這些裝置呈現給音訊應用程式,因為可供使用。

  • 有效率的電源

    當使用者從音訊插接器移除外掛程式時,驅動程式可以將該插接器線路的部分關閉電源。

  • 可設定

    移除子裝置之後,驅動程式可以使用系結至子裝置內部拓撲的硬體資源,建立具有可能不同拓撲的新子裝置。