Partilhar via


Estrutura SYNTHCAPS (dmusprop.h)

A estrutura SYNTHCAPS especifica os recursos de um sintetizador.

Sintaxe

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

Membros

Guid

Especifica a ID da classe para a interface do driver de miniporto do sintetizador.

Flags

Especifica os recursos gerais do driver. Esse membro é um campo de bits cujo valor é zero ou or bit a bit de um ou mais dos seguintes bits de sinalizador:

SYNTH_PC_DLS

O driver dá suporte a coleções de exemplo para download (DLS Nível 1).

SYNTH_PC_EXTERNAL

O sintetizador representa uma conexão com o hardware externo.

SYNTH_PC_SOFTWARESYNTH

O driver implementa um sintetizador de software.

SYNTH_PC_MEMORYSIZEFIXED

O tamanho da memória fornecido no membro MemorySize é válido e representa a quantidade máxima de memória de exemplo em bytes. Esse sinalizador normalmente é definido quando a memória de exemplo não é memória do sistema.

SYNTH_PC_GMINHARDWARE

O sintetizador dá suporte ao conjunto de som MIDI geral no hardware.

SYNTH_PC_GSINHARDWARE

O sintetizador dá suporte ao conjunto de som Roland GS no hardware.

SYNTH_PC_REVERB

O sintetizador dá suporte ao reverb.

SYNTH_PC_DLS2

O driver dá suporte a coleções de exemplo para download (DLS Nível 2).

SYNTH_PC_SYSTEMMEMORY

O sintetizador pode usar a memória do sistema.

MemorySize

Especifica a quantidade de memória de exemplo no dispositivo (em bytes). Esse campo deve conter o valor SYNTH_PC_SYSTEMMEMORY se o dispositivo usar memória do sistema para memória de exemplo sem limitação na quantidade de memória alocada.

MaxChannelGroups

Especifica o número máximo de grupos de canais compatíveis com esse driver. Cada grupo de canais representa um conjunto de 16 canais MIDI e tem associado a ele todo o estado que um dispositivo de hardware MIDI manteria, que inclui DLS, GM, GS, XG ou outras informações de modo. Os downloads de DLS, no entanto, são por driver e podem ser usados por qualquer um dos grupos de canais. Isso impede o perda de memória baixando várias cópias do mesmo exemplo de DLS, uma por grupo de canais.

MaxVoices

Especifica o número máximo de vozes compatíveis com o dispositivo de renderização. Se o manipulador de propriedades não puder fornecer um número válido para esse membro, ele deverá definir o membro como (ULONG)-1.

MaxAudioChannels

Especifica o número máximo de canais de áudio compatíveis com o dispositivo de renderização. Se o manipulador de propriedades não puder fornecer um número válido para esse membro, ele deverá definir o membro como (ULONG)-1.

EffectFlags

Especifica os efeitos que o dispositivo de renderização é capaz de produzir. Esse membro é um campo de bits cujo valor é zero ou or bit a bit dos seguintes bits de sinalizador:

SYNTH_EFFECT_REVERB

O dispositivo de renderização pode produzir efeito reverb.

SYNTH_EFFECT_CHORUS

O dispositivo de renderização pode produzir efeito de coro.

SYNTH_EFFECT_DELAY

O dispositivo de renderização pode produzir efeito de atraso.

Se o dispositivo não der suporte a nenhuma dessas funcionalidades, defina esse membro como SYNTH_EFFECT_NONE (zero).

Description[128]

Contém uma descrição de texto do dispositivo. Esse membro é uma matriz WCHAR que contém uma cadeia de caracteres terminada em nulo (por exemplo, "Microsoft MPU-401").

Observações

O KSPROPERTY_SYNTH_CAPS solicitação de propriedade de obtenção usa a estrutura SYNTHCAPS para recuperar os recursos de um dispositivo sintetizador de um driver de miniporto DMus.

SYNTH_CAPS é semelhante à estrutura DMUS_PORTCAPS, que é descrita na documentação do SDK do Microsoft Windows.

No driver de exemplo DMusUART no WDK (Windows Driver Kit), o manipulador de propriedades KSPROPERTY_SYNTH_CAPS define os membros da estrutura SYNTHCAPS com os seguintes 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;

Neste exemplo, os valores de 0xFFFFFFFF indicam que o manipulador não tem como conhecer os limites reais MaxVoices e MaxAudioChannels porque eles dependem completamente de qualquer sintetizador externo que esteja conectado ao UART. Em outro lugar no código, mas não mostrado no exemplo anterior, o manipulador de propriedades DMusUART define o membro do guid da estrutura SYNTHCAPS como CLSID_MiniportDriverDMusUART ou CLSID_MiniportDriverDMusUARTCapture. A que o Guid membro é definida depende se o nó de destino (do tipo KSNODETYPE_SYNTHESIZER) da solicitação de propriedade está em um caminho de dados que manipula dados de renderização ou captura de dados. Ambas as IDs de classe são definidas no arquivo de cabeçalho Dmusicks.h.

Requisitos

Requisito Valor
cabeçalho dmusprop.h (inclua Dmusprop.h)

Consulte também

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS