Поделиться через


Драйвер порта DMus

Драйвер порта DMus управляет синтезатором Microsoft DirectMusic или устройством захвата. В отличие от драйвера порта MIDI, который поддерживает только простые устройства MIDI, драйвер порта DMus поддерживает устройства с расширенными возможностями MIDI, такими как точное время секвенсора, загружаемые звуки (DLS) и группы каналов. Драйвер адаптера реализует соответствующий драйвер мини-порта DMus , который привязывается к драйверу порта DMus для формирования фильтра DirectMusic (см. раздел Фильтры MIDI и DirectMusic), который может отображать или захватывать поток MIDI.

Драйвер порта DMus предоставляет драйверу мини-порта интерфейс IPortDMus . IPortDMus наследует методы в базовом интерфейсе IPort. IPortDMus предоставляет следующие дополнительные методы:

IPortDMus::Notify

Уведомляет драйвер порта о том, что синтезатор MIDI или устройство захвата переместился на новую позицию в потоке MIDI.

IPortDMus::RegisterServiceGroup

Регистрирует объект группы служб в драйвере порта. Зарегистрированная группа служб содержит список из одной или нескольких процедур службы, которые вызываются драйвером порта, когда драйвер минипорта вызывает Notify; Дополнительные сведения см. в разделе Объекты приемников служб и групп служб.

Драйвер порта DMus также создает распределитель памяти для каждого потока и предоставляет интерфейс IAllocatorMXF распределителя объекту потока драйвера miniport. IAllocatorMXF наследует методы в базовом интерфейсе IMXF. IAllocatorMXF предоставляет следующие дополнительные методы:

IAllocatorMXF::GetBuffer

Возвращает буфер для события MIDI или списка событий, слишком большого размера, чтобы поместиться в структуру DMUS_KERNEL_EVENT .

IAllocatorMXF::GetBufferSize

Возвращает размер буфера, полученного методом GetBuffer , в байтах.

IAllocatorMXF::GetMessage

Возвращает буфер сообщений, содержащий хранилище для одной структуры типа DMUS_KERNEL_EVENT.

IAllocatorMXF::P utBuffer

Не используется. Объекты порта DMus и драйвера miniport взаимодействуют друг с другом через соответствующие интерфейсы IPortDMus и IMiniportMidi . Кроме того, драйвер порта взаимодействует с объектами потока драйвера минипорта через интерфейсы IMXF , а объект потока драйвера минипорта взаимодействует с распределителем драйвера порта через интерфейс IAllocatorMXF .

Дополнительные сведения о поддержке драйверов для DirectMusic см. в статье Общие сведения о драйвере miniport для синтезатора.

В Windows XP и более поздних версиях интерфейсы IPortDMus и IPortMidi реализуются в одном внутреннем модуле драйвера. Такой консолидации способствует сходство этих двух интерфейсов. Например, для обоих интерфейсов определены одни и те же методы. Приложения, написанные для предыдущих версий Windows, не должны видеть никаких изменений в поведении интерфейсов IPortMidi и IPortDMus в результате консолидации драйверов портов MIDI и DMus.