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


Драйвер DMus Miniport

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

Драйвер DMus miniport для аппаратного устройства MIDI должен поддерживать два интерфейса:

  • Интерфейс мини-порта инициализирует объект miniport и создает потоки MIDI.

  • Интерфейс потока управляет потоком MIDI и предоставляет большую часть функциональных возможностей драйвера мини-порта.

Интерфейс мини-порта IMiniportDMus наследует методы в интерфейсе IMiniport . IMiniportDMus предоставляет следующие дополнительные методы:

IMiniportDMus::Init

Инициализирует объект miniport.

IMiniportDMus::NewStream

Создает новый объект потока.

IMiniportDMus::Service

Уведомляет драйвер мини-порта о запросе на обслуживание.

Интерфейс потока IMXF наследует методы в интерфейсе IUnknown . IMXF предоставляет следующие дополнительные методы:

IMXF::ConnectOutput

Подключает этот объект потока, который является источником данных, с интерфейсом IMXF другого объекта потока, который является приемником данных.

IMXF::D isconnectOutput

Отключает этот объект потока от интерфейса IMXF другого объекта потока, который является приемником данных.

IMXF::P utMessage

Передает структуру DMUS_KERNEL_EVENT в приемник данных.

IMXF::SetState

Задает состояние потока.

Кроме того, интерфейс ISynthSinkDMus драйвера мини-порта DMus предоставляет функциональные возможности DLS для синтезаторов программного обеспечения. ISynthSinkDMus наследует методы в базовом интерфейсе IMXF. ISynthSinkDMus предоставляет следующие дополнительные методы:

ISynthSinkdMus::RefTimeToSample

Преобразует время ссылки в время выборки.

ISynthSinkdMus::Render

Преобразовывает данные волн в буфер для приемника волны.

ISynthSinkdMus::SampleToRefTime

Преобразует время выборки в время ссылки.

ISynthSinkdMus::SyncToMaster

Синхронизирует примеры часов с master часами.

Приемник волны драйвера порта вызывает ISynthSinkDMus::Render для чтения данных PCM волны, создаваемых синтезатором из входного потока MIDI. Дополнительные сведения о приемнике волны см. в статье Приемник волны для Kernel-Mode программных синтезаторов.

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

IPortDMus

IAllocatorMXF

IMasterClock

PortCls содержит встроенный драйвер мини-порта DMus для MIDI-устройства с функцией UART. Дополнительные сведения см. в разделе PcNewMiniport.