Share via


Estructura SYNTHCAPS (dmusprop.h)

La estructura SYNTHCAPS especifica las funciones de un sintetizador.

Sintaxis

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

Miembros

Guid

Especifica el identificador de clase para la interfaz del controlador miniport del sintetizador.

Flags

Especifica las funcionalidades generales del controlador. Este miembro es un campo de bits cuyo valor es cero o el or bit a bit de uno o varios de los siguientes bits de marca:

SYNTH_PC_DLS

El controlador admite colecciones de muestras descargables (dls nivel 1).

SYNTH_PC_EXTERNAL

El sintetizador representa una conexión al hardware externo.

SYNTH_PC_SOFTWARESYNTH

El controlador implementa un sintetizador de software.

SYNTH_PC_MEMORYSIZEFIXED

El tamaño de memoria especificado en el miembro MemorySize es válido y representa la cantidad máxima de memoria de muestra en bytes. Esta marca se establece normalmente cuando la memoria de ejemplo no es memoria del sistema.

SYNTH_PC_GMINHARDWARE

El sintetizador admite el conjunto de sonidos MIDI general en hardware.

SYNTH_PC_GSINHARDWARE

El sintetizador admite el conjunto de sonido Roland GS en hardware.

SYNTH_PC_REVERB

El sintetizador admite la reverberación.

SYNTH_PC_DLS2

El controlador admite colecciones de muestras descargables (DLS Level 2).

SYNTH_PC_SYSTEMMEMORY

El sintetizador puede usar la memoria del sistema.

MemorySize

Especifica la cantidad de memoria de ejemplo en el dispositivo (en bytes). Este campo debe contener el valor SYNTH_PC_SYSTEMMEMORY si el dispositivo usa la memoria del sistema para la memoria de ejemplo sin limitación en la cantidad de memoria asignada.

MaxChannelGroups

Especifica el número máximo de grupos de canales que admite este controlador. Cada grupo de canales representa un conjunto de 16 canales MIDI y tiene asociado todo el estado que un dispositivo de hardware MIDI mantendría, lo que incluye DLS, GM, GS, XG u otra información de modo. Sin embargo, las descargas de DLS son por controlador y se pueden usar en cualquiera de los grupos de canales. Esto evita la pérdida de memoria mediante la descarga de varias copias del mismo ejemplo DLS, una por grupo de canales.

MaxVoices

Especifica el número máximo de voces que admite el dispositivo de representación. Si el controlador de propiedades no puede proporcionar un número válido para este miembro, debe establecer el miembro en (ULONG)-1.

MaxAudioChannels

Especifica el número máximo de canales de audio que admite el dispositivo de representación. Si el controlador de propiedades no puede proporcionar un número válido para este miembro, debe establecer el miembro en (ULONG)-1.

EffectFlags

Especifica los efectos que el dispositivo de representación puede producir. Este miembro es un campo de bits cuyo valor es cero o el or bit a bit de los siguientes bits de marca:

SYNTH_EFFECT_REVERB

El dispositivo de representación puede producir efecto de reverberación.

SYNTH_EFFECT_CHORUS

El dispositivo de representación puede producir un efecto de coro.

SYNTH_EFFECT_DELAY

El dispositivo de representación puede producir un efecto de retraso.

Si el dispositivo no admite ninguna de estas funcionalidades, establezca este miembro en SYNTH_EFFECT_NONE (cero).

Description[128]

Contiene una descripción de texto del dispositivo. Este miembro es una matriz WCHAR que contiene una cadena terminada en null (por ejemplo, "Microsoft MPU-401").

Comentarios

La KSPROPERTY_SYNTH_CAPS solicitud get-property usa la estructura SYNTHCAPS para recuperar las funcionalidades de un dispositivo sintetizador de un controlador de miniporte DMus.

SYNTH_CAPS es similar a la estructura DMUS_PORTCAPS, que se describe en la documentación de Microsoft Windows SDK.

En el controlador de ejemplo DMusUART del Kit de controladores de Windows (WDK), el controlador de propiedades KSPROPERTY_SYNTH_CAPS establece los miembros de la estructura SYNTHCAPS en los siguientes valores:

  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;

En este ejemplo, los valores de 0xFFFFFFFF indican que el controlador no tiene forma de conocer los límites reales de MaxVoices y MaxAudioChannels porque dependen completamente de cualquier sintetizador externo que se conecte al UART. En otra parte del código, pero no se muestra en el ejemplo anterior, el controlador de propiedades DMusUART establece el miembro Guid de la estructura SYNTHCAPS en CLSID_MiniportDriverDMusUART o CLSID_MiniportDriverDMusUARTCapture. El miembro guid es que se establece en depende de si el nodo de destino (de tipo KSNODETYPE_SYNTHESIZER) de la solicitud de propiedad se encuentra en una ruta de acceso de datos que controla la representación de datos o los datos de captura. Ambos identificadores de clase se definen en el archivo de encabezado Dmusicks.h.

Requisitos

Requisito Valor
Header dmusprop.h (incluya Dmusprop.h)

Consulte también

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS