Filter Factory
音訊配接器驅動程式會提供篩選處理站來管理篩選的具現化。 每個篩選處理站都可以具現化特定類型的一或多個 KS 篩選。 如果篩選類型封裝特定的硬體函式,工廠可以具現化的該類型篩選數目會受限於基礎硬體資源。
因為篩選處理站會管理大部分自發的硬體功能區塊,所以每個篩選處理站都可以視為本身的設備磁碟機。 事實上,在上一個段落中使用的配接器驅動程式一詞是指相關驅動程式的集合--filter factory--,這些驅動程式會一起封裝在一起,以管理介面卡上的各種硬體功能。
如同任何其他 Microsoft Windows 驅動程式模型 (WDM) 驅動程式,篩選處理站會處理電源管理和設定功能。 在安裝期間,驅動程式的 INF 檔案會註冊一或多個篩選裝置名稱, (請參閱 裝置識別碼字串) 。 此程式會將名稱載入系統登錄,並將每個篩選處理站與一或多個 KS 篩選類別產生關聯,如 安裝音訊配接器的裝置介面中所述。 所有音訊裝置都分類為KSCATEGORY_AUDIO,但音訊裝置也可能分類為其他類別,例如音訊轉譯裝置) 的KSCATEGORY_RENDER (,或音訊擷取裝置) 的KSCATEGORY_CAPTURE (。 驅動程式會透過註冊該裝置篩選的各種類別來公告裝置的一般功能。 例如, 當 SysAudio 系統驅動程式需要特定類型的音訊裝置時,它會在登錄中尋找屬於適當類別的裝置。
作業系統會使用安裝程式 API,如 裝置安裝元件中所述,探索並列舉登錄中的所有KSCATEGORY_AUDIO篩選處理站。 每個處理站的登錄專案都會指定篩選處理站的易記名稱和其裝置名稱,這是用戶端傳遞給具現化篩選準則之建立檔案呼叫的長字串。 此呼叫可能會從核心模式或從使用者模式對 CreateFile進行ZwCreateFile。 篩選準則是核心模式物件,並由核心控制碼識別。 建立檔案呼叫會傳回實例控制碼,用戶端可用來參考篩選準則。 音訊圖形中的使用者模式用戶端或上游篩選準則可以使用此控制碼,將 IOCTL 要求傳送或轉送至篩選。 如需CreateFile的詳細資訊,請參閱Microsoft Windows SDK檔。
例如,典型的 WDM 音訊配接卡可能位於 PCI 匯流排上,而且包含數個用於轉譯或擷取波浪資料的 I/O 連接器。 此卡片上的單一音訊裝置可能包含用來驅動一組喇叭和線路纜線的類比音訊輸出插孔,以及從麥克風和線路纜線接收訊號的類比音訊插孔。 WDM 音訊系統會將裝置表示為篩選,並將音訊插孔表示為該篩選上的釘選。
音訊裝置的篩選會實作為個別的埠和迷你埠驅動程式,這些驅動程式會系結在一起以一致的方式運作:
迷你埠驅動程式包含硬體特定的程式碼。
埠驅動程式包含特定類型之所有篩選通用的泛型程式碼。
廠商會撰寫迷你埠驅動程式,其中包含篩選準則管理音訊硬體所需的所有專屬程式碼。 作業系統提供埠驅動程式,可透過 PortCls 系統驅動程式 (Portcls.sys 存取;請參閱 埠類別配接器驅動程式和 PortCls 系統驅動程式) 。 將篩選實作分割成埠和迷你埠驅動程式,可簡化撰寫專屬裝置驅動程式的工作。
當篩選處理站具現化篩選時,它會先建立篩選的迷你埠驅動程式物件。 然後,篩選處理站會建立適當埠物件的實例,並將迷你埠驅動程式物件系結至該實例,以形成完整運作的篩選準則。 Subdevice Creation中的程式碼範例說明此程式。 埠和迷你埠驅動程式會透過定義完善的軟體介面彼此通訊。 如需這些介面的詳細資訊,請參閱 Miniport 介面 和支援 裝置。
音訊篩選器會將基礎音訊裝置的結構公開為針腳處理站、節點和內部連線的集合。 迷你埠驅動程式會將這項資訊合併至篩選描述項,這是類型 為PCFILTER_DESCRIPTOR的結構。 此結構接著會包含篩選的針腳處理站、節點和內部連線的個別描述項。 這些描述項是下列類型的結構:
若要從迷你埠驅動程式取得篩選描述項,埠驅動程式會呼叫 IMiniport::GetDescription 方法。
如需驅動程式如何設定其PCFILTER_DESCRIPTOR結構的範例,請參閱 範例音訊驅動程式中討論的 Sysvad 範例驅動程式。