共用方式為


過濾器工廠

音訊配接器驅動程式提供篩選處理站來管理篩選條件的具現化。 每個篩選處理站都可以具現化特定類型的一或多個 KS 篩選。 如果篩選類型封裝特定的硬體函式,處理站可以具現化的該類型篩選數目會受到基礎硬體資源的限制。

因為篩選處理站會管理基本上自主的硬體功能區塊,因此每個篩選處理站都可以視為自己的設備驅動器。 事實上,如前一段中所使用的配接器驅動程式一詞,是指一組相關的驅動程式--篩選處理站集合,這些驅動程式會封裝在一起,以管理適配卡上的各種硬體功能。

如同任何其他Microsoft Windows 驅動程式模型 (WDM) 驅動程式,篩選處理站會處理電源管理和設定功能。 在安裝期間,驅動程式的 INF 檔案會註冊一或多個篩選裝置名稱(請參閱 裝置識別字串)。 此程式會將名稱載入系統登錄,並將每個篩選處理站與一或多個 KS 篩選類別產生關聯,如 安裝音訊配接器裝置介面中所述。 所有音訊裝置都分類在KSCATEGORY_AUDIO下,但音訊裝置也可能分類為其他類別,例如KSCATEGORY_RENDER(適用於音訊轉譯裝置)或KSCATEGORY_CAPTURE(適用於音訊擷取裝置)。 驅動程式會透過註冊該裝置篩選的各種類別來宣傳裝置的通用功能。 例如,當 SysAudio 系統驅動程式時,需要特定類型的音訊裝置,它會在登錄中尋找屬於適當類別的裝置。

操作系統會使用安裝程式 API,如 裝置安裝元件中所述,探索並列舉登錄中的所有 KSCATEGORY_AUDIO 篩選器工廠。 每個工廠的登錄項目都會指定篩選工廠的易記名稱和其裝置名稱,這是客戶端在實例化篩選時傳遞給建立檔案的長字串。 此呼叫可能會從核心模式 ZwCreateFile,或從使用者模式 CreateFile。 篩選條件是內核模式物件,並由核心句柄識別。 建立檔案呼叫會傳回實例句柄,用戶端可用來參考篩選條件。 音訊圖形中的使用者模式用戶端或上游過濾器可以使用這個控制代碼,將 IOCTL 請求傳送或轉寄至過濾器。 如需有關 CreateFile的詳細資訊,請參閱 Microsoft Windows SDK 文件。

例如,典型的 WDM 音訊配接器卡可能位於PCI總線上,並包含數個 I/O 連接器來轉譯或擷取波浪數據。 此卡片上的單一音訊裝置可能包含用來驅動一組喇叭和線路纜線的類比音訊輸出插孔,以及用於接收麥克風和線路纜線訊號的類比音訊插孔。 WDM 音訊系統將裝置表示為篩選器,並將音訊插孔表示為該篩選器上的接腳。

音訊裝置的濾波器實作為個別的端口和小端口驅動程式,這些驅動程式會整合在一起以協同方式運作:

  • 迷你埠驅動程式包含硬體特定的程序代碼。

  • 埠驅動程式包含適用於特定類型所有篩選器的通用代碼。

廠商撰寫迷你端口驅動程式,其中包含篩選器管理音頻硬體所需的所有專有程式碼。 操作系統提供可透過 PortCls 系統驅動程式存取的埠驅動程式 (Portcls.sys;請參閱 埠類別配接器驅動程式和 PortCls 系統驅動程式]。 將篩選實作分成埠和迷你埠驅動程式,可簡化撰寫專屬裝置驅動程式的工作。

當篩選工廠實例化濾鏡時,它首先會為濾鏡建立迷你埠驅動程式物件。 篩選處理站接著會建立適當埠對象的實例,並將迷你埠驅動程式對象系結至該實例,以形成功能完整的篩選。 Subdevice Creation 中的程式碼範例會說明此程式。 埠和迷你埠驅動程式會透過良好定義的軟體介面彼此溝通。 如需這些介面的詳細資訊,請參閱 Miniport 介面支援裝置

音訊篩選器會將基礎音訊裝置的結構公開為針腳處理站、節點和內部連線的集合。 迷你埠驅動程式會將這項資訊合併為篩選描述元,這是類型為 PCFILTER_DESCRIPTOR的結構。 接著,這個結構會包含篩選的針腳處理站、節點和內部連線的個別描述項。 這些描述項目是下列類型的結構:

PCPIN_DESCRIPTOR

PCNODE_DESCRIPTOR

PCCONNECTION_DESCRIPTOR

若要從迷你埠驅動程式取得篩選描述元,埠驅動程式會呼叫 IMiniport::GetDescription 方法。

如需驅動程式如何設定其PCFILTER_DESCRIPTOR結構的範例,請參閱 Sysvad 範例驅動程式,範例音訊驅動程式中討論。