Dmu 端口驱动程序

DMus 端口驱动程序管理 Microsoft DirectMusic 合成器或捕获设备。 与仅支持简单 MIDI 设备的 MIDI 端口驱动程序相比,DMus 端口驱动程序支持具有高级 MIDI 功能(例如精度顺序器计时、可下载的声音 (DLS) 和声道组)的设备。 适配器驱动程序会实现相应的 DMus 微型端口驱动程序,该驱动程序绑定到 DMus 端口驱动程序以形成可呈现或捕获 MIDI 流的 DirectMusic 筛选器(请参阅 MIDI 和 DirectMusic 筛选器)。

DMus 端口驱动程序向微型端口驱动程序公开 IPortDMus 接口。 IPortDMus 会继承基接口 IPort 中的方法。 IPortDMus 提供以下其他方法:

IPortDMus::Notify

通知端口驱动程序 MIDI 合成器或捕获设备已前进到 MIDI 流中的新位置。

IPortDMus::RegisterServiceGroup

向端口驱动程序注册服务组对象。 已注册服务组包含微型端口驱动程序调用 Notify 时由端口驱动程序调用的一个或多个服务例程的列表;有关详细信息,请参阅服务接收器和服务组对象

DMus 端口驱动程序还会为每个流创建内存分配器,并将该分配器的 IAllocatorMXF 接口公开到微型端口驱动程序的流对象。 IAllocatorMXF 会继承基接口 IMXF 中的方法。 IAllocatorMXF 提供以下其他方法:

IAllocatorMXF::GetBuffer

获取 MIDI 事件或事件列表的缓冲区,这些事件太大而无法容纳在 DMUS_KERNEL_EVENT 结构中。

IAllocatorMXF::GetBufferSize

获取 GetBuffer 方法检索的缓冲区大小(字节)。

IAllocatorMXF::GetMessage

获取一个消息缓冲区,其中包含 DMUS_KERNEL_EVENT 类型的单个结构的存储。

IAllocatorMXF::PutBuffer

未使用。 DMus 端口和微型端口驱动程序对象通过各自的 IPortDMusIMiniportMidi 接口相互通信。 此外,端口驱动程序通过其 IMXF 接口与微型端口驱动程序的流对象通信,微型端口驱动程序的流对象通过其 IAllocatorMXF 接口与端口驱动程序的分配器通信。

有关 DirectMusic 的驱动程序支持的详细信息,请参阅合成器微型端口驱动程序概述

在 Windows XP 及更高版本中,IPortDMusIPortMidi 接口均在单个内部驱动程序模块中实现。 这两个接口的相似性可促进这种整合。 例如,为这两个接口定义了相同的方法。 为早期版本的 Windows 编写的应用程序不会看到 IPortMidiIPortDMus 接口的任何行为变化,此类变化是因 MIDI 和 DMus 端口驱动程序的整合导致的。