Share 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 as funcionalidades gerais do driver. Esse membro é um campo de bits cujo valor é zero ou o 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 a 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 aos quais esse driver dá suporte. Cada grupo de canais representa um conjunto de 16 canais MIDI e associou a ele todo o estado que um dispositivo de hardware MIDI manteria, que inclui DLS, GM, GS, XG ou outras informações de modo. No entanto, os downloads de DLS 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 aos quais o dispositivo de renderização dá suporte. 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 o OR bit a bit dos seguintes bits de sinalizador:

SYNTH_EFFECT_REVERB

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

SYNTH_EFFECT_CHORUS

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

SYNTH_EFFECT_DELAY

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

Se o dispositivo não der suporte a nenhum desses recursos, 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").

Comentários

O KSPROPERTY_SYNTH_CAPS solicitação get-property 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 (Kit de Driver do Windows), 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 0xFFFFFFFF indicam que o manipulador não tem como conhecer os limites reais de MaxVoices e MaxAudioChannels porque eles são completamente dependentes 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 Guid da estrutura SYNTHCAPS como CLSID_MiniportDriverDMusUART ou CLSID_MiniportDriverDMusUARTCapture. A que o membro Guid é definido como depende se o nó de destino (do tipo KSNODETYPE_SYNTHESIZER) para a solicitação de propriedade está em um caminho de dados que manipula dados de renderização ou dados de captura. 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)

Confira também

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS