DirectMusic Miniport 驅動程式介面
DMus 迷你埠驅動程式介面是以 MIDI 迷你埠驅動程式介面為基礎,但會新增下列延伸模組以支援進階合成器:
每個實例的 DLS 下載大於 16 個通道
排序硬體中的記事事件
DMus 迷你埠驅動程式介面與 MIDI 迷你埠驅動程式介面有數種方式不同。 DMus 迷你埠驅動程式會實作 介面 IMiniportDMus ,而不是 IMiniportMidi。 這個介面類別似于 IMiniportMidi,但 IMiniportDMus::NewStream 方法會建立 IMXF (MIDI 轉換篩選器) 介面,並聯機到 DMus 埠驅動程式中的 IAllocatorMXF 介面,而不是實作 IMiniportMidiStream 介面。 IAllocatorMXF 和 IMXF 會將標準 GetMessage 和 PutMessage 呼叫包裝 (請參閱 IAllocatorMXF::GetMessage 和 IMXF::P utMessage) 。 這些呼叫會處理封裝的事件,而不是原始 MIDI 位元組。
合成器的 DMus 迷你埠驅動程式可以實作部分或所有 DirectMusic 屬性。 這些屬性可讓系統管理裝置的 DLS 下載和通道配置。 dmusprop.h 標頭檔會定義 DirectMusic 特定的屬性專案。 如需這些屬性的清單,請參閱 KSPROPSETID_Synth 和 KSPROPSETID_Synth_Dls。
DMus 迷你埠驅動程式預期允許建立多個針腳實例。 每個針腳實例可做為一個虛擬合成器,並包含一組通道和 DLS 下載,與其他針腳實例無關。
音訊驅動程式屬性集中所述的一些合成屬性會在針腳實例上運作,而其他則為全域屬性。 若要處理全域屬性,合成器在其拓撲中必須有合成器節點。 每個屬性專案的描述會指出該專案是傳送至合成器節點還是釘選實例。 針對每個支援合成的硬體片段,都有埠驅動程式物件和迷你埠驅動程式物件,如下圖所示。
埠驅動程式物件會公開 IPortDMus 介面的一個實例,該介面是由迷你埠驅動程式物件所持有。 迷你埠驅動程式會匯出 IMiniportDMus 介面的一個實例,該介面是由埠驅動程式所持有。 針對每個具現化的針腳,埠驅動程式會要求相符的 IMXF 介面。 系統與這個實例之間的通訊是屬性要求的組合,這些要求會定址至流向 IMXF 資料流程介面或流向 IMXF 資料流程介面的事件。
建立迷你埠驅動程式時,必須傳遞兩個物件:
時鐘
Allocator 物件
時鐘對於轉譯和擷取作業非常重要。 迷你埠驅動程式必須在指定的時間轉譯筆記;當迷你埠驅動程式在 MIDI 資料中讀取時,它必須知道時間,才能將核心事件時間戳記。 如需詳細資訊,請參閱 延遲時鐘。
配置 器 物件具有 IAllocatorMXF 介面,可用來作為記憶體集區來回收記憶體。 系統中的所有 MIDI 訊息都會從這個通用集區配置。 配置器物件應該用來建立或終結個別訊息。
本節涵蓋: