DMus 端口驱动程序管理 Microsoft DirectMusic 合成器或捕获设备。 与仅支持简单 MIDI 设备的 MIDI 端口驱动程序相比,DMus 端口驱动程序支持具有高级 MIDI 功能的设备,例如精度序列器计时、可下载的声音(DLS)和通道组。 适配器驱动程序实现相应的 DMus 微型端口驱动程序 ,该驱动程序绑定到 DMus 端口驱动程序以形成 DirectMusic 筛选器(请参阅 MIDI 和 DirectMusic 筛选器),该筛选器可以呈现或捕获 MIDI 流。
DMus 端口驱动程序向微型端口驱动程序公开 IPortDMus 接口。 IPortDMus 继承基接口 IPort 中的方法。 IPortDMus 提供以下其他方法:
通知端口驱动程序,MIDI 流中的合成器或捕获设备已前进到新的位置。
IPortDMus::RegisterServiceGroup
向端口驱动程序注册服务组对象。 已注册的服务组包含一个或多个服务例程的列表,当小端口驱动程序调用 通知时,端口驱动程序会调用这些例程;有关详细信息,请参阅 服务接收器和服务组对象。
DMus 端口驱动程序还会为每个流创建内存 分配器 ,并将分配器的 IAllocatorMXF 接口公开到微型端口驱动程序的流对象。 IAllocatorMXF 继承基接口 IMXF 中的方法。 IAllocatorMXF 提供以下其他方法:
获取用于 MIDI 事件或事件列表的缓冲区,因为这些事件太大,无法容纳在 DMUS_KERNEL_EVENT 结构中。
获取 GetBuffer 方法检索的缓冲区的大小(以字节为单位)。
获取一个消息缓冲区,其中包含DMUS_KERNEL_EVENT类型的单个结构的存储。
未使用。 DMus 端口和微型端口驱动程序对象通过各自的 IPortDMus 和 IMiniportMidi 接口相互通信。 此外,端口驱动程序通过其 IMXF 接口与微型端口驱动程序的流对象通信,微型端口驱动程序的流对象通过其 IAllocatorMXF 接口与端口驱动程序分配器通信。
有关 DirectMusic 的驱动程序支持的详细信息,请参阅 合成器微型端口驱动程序概述。
在 Windows XP 及更高版本中, IPortDMus 和 IPortMidi 接口均在单个内部驱动程序模块中实现。 这两个接口的相似性促进了这种整合。 例如,为这两个接口定义了相同的方法。 为早期版本的 Windows 编写的应用程序不应看到 IPortMidi 和 IPortDMus 接口的行为因 MIDI 和 DMus 端口驱动程序的合并而引起的任何变化。