Драйвер порта DMus
Драйвер порта DMus управляет синтезатором Microsoft DirectMusic или устройством захвата. В отличие от драйвера порта MIDI, который поддерживает только простые устройства MIDI, драйвер порта DMus поддерживает устройства с расширенными возможностями MIDI, такими как точное время секвенсора, загружаемые звуки (DLS) и группы каналов. Драйвер адаптера реализует соответствующий драйвер мини-порта DMus , который привязывается к драйверу порта DMus для формирования фильтра DirectMusic (см. раздел Фильтры MIDI и DirectMusic), который может отображать или захватывать поток MIDI.
Драйвер порта DMus предоставляет драйверу мини-порта интерфейс IPortDMus . IPortDMus наследует методы в базовом интерфейсе IPort. IPortDMus предоставляет следующие дополнительные методы:
Уведомляет драйвер порта о том, что синтезатор MIDI или устройство захвата переместился на новую позицию в потоке MIDI.
IPortDMus::RegisterServiceGroup
Регистрирует объект группы служб в драйвере порта. Зарегистрированная группа служб содержит список из одной или нескольких процедур службы, которые вызываются драйвером порта, когда драйвер минипорта вызывает Notify; Дополнительные сведения см. в разделе Объекты приемников служб и групп служб.
Драйвер порта DMus также создает распределитель памяти для каждого потока и предоставляет интерфейс IAllocatorMXF распределителя объекту потока драйвера miniport. IAllocatorMXF наследует методы в базовом интерфейсе IMXF. IAllocatorMXF предоставляет следующие дополнительные методы:
Возвращает буфер для события MIDI или списка событий, слишком большого размера, чтобы поместиться в структуру DMUS_KERNEL_EVENT .
Возвращает размер буфера, полученного методом GetBuffer , в байтах.
Возвращает буфер сообщений, содержащий хранилище для одной структуры типа DMUS_KERNEL_EVENT.
Не используется. Объекты порта DMus и драйвера miniport взаимодействуют друг с другом через соответствующие интерфейсы IPortDMus и IMiniportMidi . Кроме того, драйвер порта взаимодействует с объектами потока драйвера минипорта через интерфейсы IMXF , а объект потока драйвера минипорта взаимодействует с распределителем драйвера порта через интерфейс IAllocatorMXF .
Дополнительные сведения о поддержке драйверов для DirectMusic см. в статье Общие сведения о драйвере miniport для синтезатора.
В Windows XP и более поздних версиях интерфейсы IPortDMus и IPortMidi реализуются в одном внутреннем модуле драйвера. Такой консолидации способствует сходство этих двух интерфейсов. Например, для обоих интерфейсов определены одни и те же методы. Приложения, написанные для предыдущих версий Windows, не должны видеть никаких изменений в поведении интерфейсов IPortMidi и IPortDMus в результате консолидации драйверов портов MIDI и DMus.