Структура 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
Драйвер поддерживает скачиваемые примеры коллекций (уровень 1 DLLS).
SYNTH_PC_EXTERNAL
Синт представляет подключение к внешнему оборудованию.
SYNTH_PC_SOFTWARESYNTH
Драйвер реализует синтезатор программного обеспечения.
SYNTH_PC_MEMORYSIZEFIXED
Размер памяти, указанный в элементе MemorySize, является допустимым и представляет максимальный объем памяти в байтах. Этот флаг обычно устанавливается, если образец памяти не является системной памятью.
SYNTH_PC_GMINHARDWARE
Синт поддерживает общий звуковой набор MIDI в оборудовании.
SYNTH_PC_GSINHARDWARE
Синт поддерживает звуковой набор Roland GS в оборудовании.
SYNTH_PC_REVERB
Синт поддерживает реверб.
SYNTH_PC_DLS2
Драйвер поддерживает скачиваемые примеры коллекций (уровень 2 DLLS).
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, описанную в документации по пакету SDK для Microsoft Windows.
В примере драйвера 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 Guid структуры SYNTHCAPS как CLSID_MiniportDriverDMusUART или CLSID_MiniportDriverDMusUARTCapture. Один из элементов Guid зависит от того, является ли целевой узел (тип KSNODETYPE_SYNTHESIZER) для запроса свойств находится на пути к данным, обрабатывающим данные отрисовки или записи данных. Оба идентификатора класса определены в файле заголовка Dmusicks.h.
Требования
Требование | Ценность |
---|---|
заголовка | dmusprop.h (include Dmusprop.h) |