Драйвер DMus Miniport
Драйвер мини-порта DMus управляет зависимыми от оборудования функциями расширенных MIDI-устройств. Эти устройства поддерживают возможности DirectMusic, такие как точное время секвенсора, скачиваемые звуки (DLS) и группы каналов. Драйверы мини-портов DMus могут обеспечить высокую производительность на таких устройствах, как MPU-401. Время может обрабатываться драйвером мини-порта или драйвером порта в зависимости от возможностей оборудования. Драйвер мини-порта DMus также может поддерживать программный синтезатор, который создает поток вывода волн.
Драйвер DMus miniport для аппаратного устройства MIDI должен поддерживать два интерфейса:
Интерфейс мини-порта инициализирует объект miniport и создает потоки MIDI.
Интерфейс потока управляет потоком MIDI и предоставляет большую часть функциональных возможностей драйвера мини-порта.
Интерфейс мини-порта IMiniportDMus наследует методы в интерфейсе IMiniport . IMiniportDMus предоставляет следующие дополнительные методы:
Инициализирует объект miniport.
Создает новый объект потока.
Уведомляет драйвер мини-порта о запросе на обслуживание.
Интерфейс потока IMXF наследует методы в интерфейсе IUnknown . IMXF предоставляет следующие дополнительные методы:
Подключает этот объект потока, который является источником данных, с интерфейсом IMXF другого объекта потока, который является приемником данных.
Отключает этот объект потока от интерфейса IMXF другого объекта потока, который является приемником данных.
Передает структуру DMUS_KERNEL_EVENT в приемник данных.
Задает состояние потока.
Кроме того, интерфейс ISynthSinkDMus драйвера мини-порта DMus предоставляет функциональные возможности DLS для синтезаторов программного обеспечения. ISynthSinkDMus наследует методы в базовом интерфейсе IMXF. ISynthSinkDMus предоставляет следующие дополнительные методы:
ISynthSinkdMus::RefTimeToSample
Преобразует время ссылки в время выборки.
Преобразовывает данные волн в буфер для приемника волны.
ISynthSinkdMus::SampleToRefTime
Преобразует время выборки в время ссылки.
Синхронизирует примеры часов с master часами.
Приемник волны драйвера порта вызывает ISynthSinkDMus::Render для чтения данных PCM волны, создаваемых синтезатором из входного потока MIDI. Дополнительные сведения о приемнике волны см. в статье Приемник волны для Kernel-Mode программных синтезаторов.
Драйвер мини-порта вызывает следующие интерфейсы в драйвере порта DMus:
PortCls содержит встроенный драйвер мини-порта DMus для MIDI-устройства с функцией UART. Дополнительные сведения см. в разделе PcNewMiniport.