Share via


動態音訊子裝置

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

例如, Intel 高定義音訊規格 使用音訊編解碼器一詞來參考透過 HD 音訊連結介面連接到高階音訊 (HD 音訊) 控制器的整合式音訊配接器。 典型的音訊編解碼器支援插孔存在偵測:當插入或從插孔中移除外掛程式時,硬體會產生中斷,以通知驅動程式硬體組態中的變更。 例如,驅動程式會建立 KS 篩選器 來代表耳機的音訊子裝置,以回應插入耳機插接器。 例如,驅動程式會將硬體資源指派給篩選 (,耳機可能需要音量控制和數位對類比轉換器,或 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 常式。

本節中的下列主題說明如何使用動態拓撲來實作介面卡的驅動程式支援:

管理動態拓撲

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

動態音訊子裝置的 Jack 描述