次の方法で共有


DMus ポート ドライバー

DMus ポート ドライバーは、Microsoft DirectMusic シンセサイザーまたはキャプチャ デバイスの管理を行います。 シンプルな MIDI デバイスのみをサポートする MIDI ポート ドライバーとは異なり、DMus ポート ドライバーは、精度シーケンサーのタイミング、ダウンロード可能なサウンド (DLS)、チャンネル グループなどの高度な MIDI 機能を備えたデバイスをサポートします。 アダプター ドライバーは、DMus ポート ドライバーにバインドする対応する DMus ミニポート ドライバーを実装して、MIDI ストリームをレンダリングまたはキャプチャできる DirectMusic フィルター (「MIDI フィルターと DirectMusic フィルター」を参照) を形成します。

DMus ポート ドライバーは、ミニポート ドライバーに IPortDMus インターフェイスを公開します。 IPortDMus は、基本インターフェイス IPort のメソッドを継承します。 IPortDMus には、次の追加メソッドが用意されています。

IPortDMus::Notify

MIDI シンセサイザーまたはキャプチャ デバイスが MIDI ストリーム内の新しい位置に進んだことをポート ドライバーに通知します。

IPortDMus::RegisterServiceGroup

ポート ドライバーにサービス グループ オブジェクトを登録します。 登録されたサービス グループには、ミニポート ドライバーが通知を呼び出すときにポート ドライバーによって呼び出される 1 つ以上のサービス ルーチンの一覧が含まれています。詳細については、「サービス シンクとサービス グループ オブジェクト」を参照してください。

また、DMus ポート ドライバーは、各ストリームのメモリ アロケーターを作成し、アロケーターの IAllocatorMXF インターフェイスをミニポート ドライバーのストリーム オブジェクトに公開します。 IAllocatorMXF は、基本インターフェイス IMXF のメソッドを継承します。 IAllocatorMXF には、次の追加メソッドが用意されています。

IAllocatorMXF::GetBuffer

DMUS_KERNEL_EVENT 構造体に収まらない大きさの MIDI イベントまたはイベント リストのバッファを取得します。

IAllocatorMXF::GetBufferSize

GetBuffer メソッドによって取得されたバッファーのサイズ (バイト単位) を取得します。

IAllocatorMXF::GetMessage

DMUS_KERNEL_EVENT 型の 1 つの構造体のストレージを含むメッセージ バッファーを取得します。

IAllocatorMXF::PutBuffer

使用しません。 DMus ポートとミニポート ドライバー オブジェクトは、それぞれの IPortDMus インターフェイスと IMiniportMidi インターフェイスを介して相互に通信します。 さらに、ポート ドライバーは、IMXF インターフェイスを介してミニポート ドライバーのストリーム オブジェクトと通信し、ミニポート ドライバーのストリーム オブジェクトは、その IAllocatorMXF インターフェイスを介してポート ドライバーのアロケーターと通信します。

DirectMusic のドライバー サポートの詳細については、「シンセサイザー ミニポート ドライバーの概要」を参照してください。

Windows XP 以降では、IPortDMus インターフェイスと IPortMidi インターフェイスはどちらも 1 つの内部ドライバー モジュールに実装されます。 この統合は、これら 2 つのインターフェイスの類似性によって容易になります。 たとえば、両方のインターフェイスに同じメソッドが定義されています。 以前のバージョンの Windows 用に作成されたアプリケーションでは、MIDI および DMus ポート ドライバーの 統合に起因する IPortMidi および IPortDMus インターフェイスの動作に変更はありません。