共用方式為


合成器 Miniport 驅動程式概觀

DirectMusic 支援需要 synth 和接收。 每個的預設實作都會隨 DirectMusic 一起提供。 使用者模式 Microsoft 軟體合成器會以預設合成器的形式提供,而 DirectSound 是預設波浪接收。 這些提供完整的硬體模擬,但通常可以使用核心模式軟體或硬體實作來達到進一步的效能增強功能。

如果您要實作硬體支援,唯一的選擇是撰寫核心模式驅動程式。 在核心模式中,波接收是由 PortCls 中的 DMus 埠驅動程式所提供,因此不需要取代自訂實作 (,因為有時是在使用者模式中完成) 。

對於核心模式 DirectMusic 驅動程式,最重要的標頭檔是 dmusicks.h。 它包含實作迷你埠驅動程式所需的主要核心模式介面。 這些介面包括:

IMiniportDMus

ISynthSinkDMus

IMXF

IAllocatorMXF

IMasterClock

IPortDMus

這些介面的最後三個會在 PortCls.sys 中實作。

其他兩個感興趣的標頭檔是 dmusprop.h,其中包含 DirectMusic 屬性專案,而 dmusbuff.h 則包含主要 IRP 結構,DMUS_EVENTHEADER。

下圖顯示 IHV 配接器驅動程式與 DirectMusic 系統的其餘部分之間的關聯性。

說明配接器驅動程式與 DirectMusic 系統之間關聯性的圖表。

在最上層,驅動程式會透過 DirectMusic 埠驅動程式公開, (IDirectMusicPort 介面實例) 。 這是應用程式與 DirectMusic 交談的方式。 此埠驅動程式會透過DeviceIoControl函式,透過標準核心串流呼叫向下與針腳實例通訊, (如Microsoft Windows SDK檔) 中所述。

請注意,「埠」一詞在上圖中有兩個衝突的意義。 使用核心模式 DMus 埠驅動程式,避免使用 DirectMusic API 使用上述使用者模式的字詞埠。 詞彙在兩個內容中具有類似但稍微不同的意義。 特別是請注意,圖形頂端的 IDirectMusicPort 介面會呈現 DMus 埠驅動程式在圖形下半部實作的單一針腳實例抽象概念。

每個迷你埠驅動程式物件都會連接到相符的埠驅動程式物件。 埠驅動程式物件會提供基本服務給迷你埠驅動程式。 對應至裝置一個開啟實例的每個針腳實例都有像是格式轉換、排序和「thruing」 (等服務,以取得對連線的討論,請參閱 Windows SDK 檔中 IDirectMusicThru 介面的描述) 。 針腳可以是目標或來源,而且可以支援多個資料格式和範圍。 每個釘選實例都會指定目標或來源,並指定支援哪些資料格式和範圍。

迷你埠驅動程式物件是由 IHV 的配接器驅動程式所建立。 雖然每個驅動程式的開啟實例都有一個針腳實例和 Sequencer,但每個硬體 (或載入的核心軟體合成器只有一個埠迷你埠驅動程式配對) 。 與迷你埠驅動程式的通訊是透過傳遞至迷你埠驅動程式的事件串流,以及迷你埠驅動程式所支援的屬性專案。

DirectMusic Miniport 驅動程式介面一節提供 DirectMusic 迷你埠驅動程式實作的詳細資料。