共用方式為


動態音訊子裝置

某些音訊配接器可以在執行階段動態變更其內部拓撲。 藉由使用 PortCls 系統驅動程式 (Portcls.sys) 中的系統提供功能,配接器驅動程式可以為動態設定的音訊硬體提供軟體支援。

例如, 英特爾高清音頻規格 使用術語音頻編解碼器來指通過高清音頻鏈接接口連接到高清音頻(高清音頻)控制器的集成音頻適配器。 典型的音訊編解碼器支援插孔存在偵測:當插頭插入插孔或從插孔中移除時,硬體會產生中斷,以通知驅動程式硬體設定的變更。 例如,驅動程式藉由建立一個KS filter來代表耳機的音訊子裝置,以回應將插頭插入耳機插孔的動作。 驅動程式會將硬體資源指派給篩選器 (例如,耳機可能需要音量控制和數位類比轉換器或 DAC) ,並將篩選器註冊為音訊裝置。 當使用者拔除耳機時,驅動程式會藉由釋放資源、刪除篩選器,以及從登錄中移除它來回應。

此行為可確保當音訊應用程式檢查已註冊哪些音訊裝置時,它只會尋找目前已插入的裝置。 如果裝置已拔除,則不會出現在登錄中。

在 Windows Vista、Windows Server 2003 與 Service Pack 1 (SP1) 和 Windows XP 與 Service Pack 2 (SP2) 中,PortCls 支援 IUnregisterSubdeviceIUnregisterPhysicalConnection 介面。 音訊配接器驅動程式會使用這兩個介面來刪除不再使用的音訊子裝置。 舊版 Windows,包括 Windows Server 2003 和 Windows XP,不支援這些介面。 在這些舊版 Windows 中,可以建立子裝置,但無法刪除子裝置,一旦建立子裝置,它就會在配接器驅動程式物件的存留期內存在。

IUnregisterSubdevice 介面包含單一方法,配接器驅動程式可用來「取消註冊」驅動程式透過先前呼叫 PcRegisterSubdevice 常式註冊的子裝置:

IUnregisterSubdevice::UnregisterSubdevice

IUnregisterPhysicalConnection 介面包含三種方法,配接卡驅動程式可用來取消註冊子裝置之間的實體連線:

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

這些方法會移除驅動程式透過先前呼叫 PcRegisterPhysicalConnectionPcRegisterPhysicalConnectionFromExternalPcRegisterPhysicalConnectionToExternal 常式來註冊的連線。 PortCls 會儲存來自 PcRegisterPhysicalConnectionXxx 呼叫的資訊,讓埠驅動程式後續可以使用資訊來回應 KSPROPERTY_PIN_PHYSICALCONNECTION 屬性要求。 從配接器拓撲刪除子裝置時,驅動程式必須將子裝置的實體連線取消註冊至該拓撲部分。 無法取消註冊子裝置的實體連線,可能會導致記憶體流失。 PortCls 支援 Windows 2000 和更新版本中的 PcRegisterXxx 常式。

本節中的下列主題說明如何實作具有動態拓撲的配接器驅動程式支援:

管理動態拓撲

動態子裝置的驅動程式支援

動態音訊子裝置的插孔說明