DMus ポート ドライバーは、Microsoft DirectMusic シンセサイザーまたはキャプチャ デバイスを管理します。 シンプルな MIDI デバイスのみをサポートする MIDI ポート ドライバーとは異なり、DMus ポート ドライバーは、精度シーケンサーのタイミング、ダウンロード可能なサウンド (DLS)、チャネル グループなどの高度な MIDI 機能を備えたデバイスをサポートします。 アダプター ドライバーは、DMus ポート ドライバーにバインドする対応する DMus ミニポート ドライバー を実装して、MIDI ストリームをレンダリングまたはキャプチャできる DirectMusic フィルター ( MIDI および DirectMusic フィルターを参照) を形成します。
DMus ポート ドライバーは、ミニポート ドライバーに IPortDMus インターフェイスを公開します。 IPortDMus は、基本インターフェイス IPort のメソッドを継承します。 IPortDMus には、次の追加メソッドが用意されています。
MIDI シンセサイザーまたはキャプチャ デバイスが MIDI ストリーム内の新しい位置に進んだことをポート ドライバーに通知します。
IPortDMus::RegisterServiceGroup
ポート ドライバーにサービス グループ オブジェクトを登録します。 登録されたサービス グループには、ミニポート ドライバーが 通知を呼び出すときにポート ドライバーによって呼び出される 1 つ以上のサービス ルーチンの一覧が含まれています。詳細については、「 サービス シンクおよびサービス グループ オブジェクト」を参照してください。
また、DMus ポート ドライバーは、各ストリームのメモリ アロケーター を作成し、アロケーターの IAllocatorMXF インターフェイスをミニポート ドライバーのストリーム オブジェクトに公開します。 IAllocatorMXF は 、基本インターフェイス IMXF のメソッドを継承します。 IAllocatorMXF には、次の追加メソッドが用意されています。
大きすぎてDMUS_KERNEL_EVENT構造体に収まりきらないMIDIイベントまたはイベントのリスト用のバッファを取得します。
GetBuffer メソッドによって取得されたバッファーのサイズ (バイト単位) を取得します。
DMUS_KERNEL_EVENT型の 1 つの構造体のストレージを含むメッセージ バッファーを取得します。
使用されません。 DMus ポートとミニポート ドライバー オブジェクトは、それぞれの IPortDMus インターフェイスと IMiniportMidi インターフェイスを介して相互に通信します。 さらに、ポート ドライバーは、 IMXF インターフェイスを介してミニポート ドライバーのストリーム オブジェクトと通信し、ミニポート ドライバーのストリーム オブジェクトは、 その IAllocatorMXF インターフェイスを介してポート ドライバーのアロケーターと通信します。
DirectMusic のドライバーサポートの詳細については、「 シンセサイザー ミニポート ドライバーの概要」を参照してください。
Windows XP 以降では、 IPortDMus インターフェイスと IPortMidi インターフェイスはどちらも 1 つの内部ドライバー モジュールに実装されます。 この統合は、これら 2 つのインターフェイスの類似性によって容易になります。 たとえば、両方のインターフェイスに同じメソッドが定義されています。 以前のバージョンの Windows 用に作成されたアプリケーションでは、MIDI および DMus ポート ドライバーの統合に起因する IPortMidi および IPortDMus インターフェイスの動作に変更はありません。