Структура SYNTHCAPS (dmusprop.h)

Структура SYNTHCAPS определяет возможности синтезатора.

Синтаксис

typedef struct _SYNTHCAPS {
  GUID  Guid;
  DWORD Flags;
  DWORD MemorySize;
  DWORD MaxChannelGroups;
  DWORD MaxVoices;
  DWORD MaxAudioChannels;
  DWORD EffectFlags;
  WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;

Члены

Guid

Указывает идентификатор класса для интерфейса драйвера минипорта синтезатора.

Flags

Указывает общие возможности драйвера. Этот элемент представляет собой битовое поле, значение которого равно нулю или побитовой ИЛИ одного или нескольких из следующих битов флага:

SYNTH_PC_DLS

Драйвер поддерживает скачиваемые примеры коллекций (уровень DLS 1).

SYNTH_PC_EXTERNAL

Синтезатор представляет подключение к внешнему оборудованию.

SYNTH_PC_SOFTWARESYNTH

Драйвер реализует программный синтезатор.

SYNTH_PC_MEMORYSIZEFIXED

Размер памяти, заданный в элементе MemorySize , является допустимым и представляет максимальный объем памяти образца в байтах. Этот флаг обычно устанавливается, если образец памяти не является системной памятью.

SYNTH_PC_GMINHARDWARE

Синтезатор поддерживает набор звука General MIDI на оборудовании.

SYNTH_PC_GSINHARDWARE

Синтезатор поддерживает набор звуков Roland GS в аппаратном обеспечении.

SYNTH_PC_REVERB

Синтезатор поддерживает реверберацию.

SYNTH_PC_DLS2

Драйвер поддерживает скачиваемые образцы коллекций (уровень 2 DLS).

SYNTH_PC_SYSTEMMEMORY

Синтезатор может использовать системную память.

MemorySize

Указывает объем памяти образца на устройстве (в байтах). Это поле должно содержать значение, SYNTH_PC_SYSTEMMEMORY если устройство использует системную память для выборки памяти без ограничений на объем выделенной памяти.

MaxChannelGroups

Указывает максимальное количество групп каналов, поддерживаемых драйвером. Каждая группа каналов представляет набор из 16 MIDI-каналов и связывает с ним все состояние, которое будет хранить аппаратное устройство MIDI, включая DLS, GM, GS, XG или другие сведения о режиме. Однако загрузка DLS выполняется для каждого драйвера и может использоваться любой из групп каналов. Это предотвращает нехватку памяти, скачивая несколько копий одного и того же примера DLS, по одной на группу каналов.

MaxVoices

Указывает максимальное количество голосов, поддерживаемых устройством отрисовки. Если обработчик свойств не может указать допустимое число для этого элемента, он должен задать для элемента значение (ULONG)-1.

MaxAudioChannels

Указывает максимальное количество аудиоканалов, поддерживаемых устройством отрисовки. Если обработчик свойств не может указать допустимое число для этого элемента, он должен задать для элемента значение (ULONG)-1.

EffectFlags

Указывает эффекты, которые может производить устройство отрисовки. Этот член представляет собой битовое поле, значение которого равно нулю или побитовой ИЛИ следующих битов флага:

SYNTH_EFFECT_REVERB

Устройство отрисовки может создавать эффект реверберации.

SYNTH_EFFECT_CHORUS

Устройство отрисовки может создавать эффект хора.

SYNTH_EFFECT_DELAY

Устройство отрисовки может привести к эффекту задержки.

Если устройство не поддерживает ни одну из этих возможностей, задайте для этого элемента значение SYNTH_EFFECT_NONE (ноль).

Description[128]

Содержит текстовое описание устройства. Этот элемент представляет собой массив WCHAR, содержащий строку, завершающуюся null (например, Microsoft MPU-401).

Комментарии

В запросе KSPROPERTY_SYNTH_CAPS get-property используется структура SYNTHCAPS для получения возможностей синтезатора из драйвера мини-порта DMus.

SYNTH_CAPS похожа на структуру DMUS_PORTCAPS, описанную в документации по Microsoft Windows SDK.

В примере драйвера DMusUART в комплекте драйверов Windows (WDK) обработчик свойств KSPROPERTY_SYNTH_CAPS присваивает членам структуры SYNTHCAPS следующие значения:

  SYNTHCAPS *caps = (SYNTHCAPS*)pRequest->Value;
  ...
  caps->Flags              = SYNTH_PC_EXTERNAL;
  caps->MemorySize         = 0;         
  caps->MaxChannelGroups   = 1;
  caps->MaxVoices          = 0xFFFFFFFF;  // (ULONG)-1
  caps->MaxAudioChannels   = 0xFFFFFFFF;  // (ULONG)-1
  caps->EffectFlags        = 0;

В этом примере значения 0xFFFFFFFF указывают, что обработчик не может узнать фактические ограничения MaxVoices и MaxAudioChannels , так как они полностью зависят от внешнего синтезатора, подключенного к UART. В другом месте кода, но не показано в предыдущем примере, обработчик свойств DMusUART задает член GUID структуры SYNTHCAPS как CLSID_MiniportDriverDMusUART или CLSID_MiniportDriverDMusUARTCapture. Для элемента GUID задано значение , зависит от того, находится ли целевой узел (типа KSNODETYPE_SYNTHESIZER) для запроса свойства на пути к данным, который обрабатывает данные отрисовки или записи данных. Оба идентификатора класса определены в файле заголовка Dmusicks.h.

Требования

Требование Значение
Заголовок dmusprop.h (включая Dmusprop.h)

См. также раздел

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS