Structure SYNTHCAPS (dmusprop.h)
La structure SYNTHCAPS spécifie les fonctionnalités d’un synthétiseur.
Syntaxe
typedef struct _SYNTHCAPS {
GUID Guid;
DWORD Flags;
DWORD MemorySize;
DWORD MaxChannelGroups;
DWORD MaxVoices;
DWORD MaxAudioChannels;
DWORD EffectFlags;
WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;
Membres
Guid
Spécifie l’ID de classe pour l’interface du pilote miniport du synthétiseur.
Flags
Spécifie les fonctionnalités générales du pilote. Ce membre est un champ de bits dont la valeur est égale à zéro ou au niveau du bit OR d’un ou plusieurs des bits d’indicateur suivants :
SYNTH_PC_DLS
Le pilote prend en charge les exemples de collections téléchargeables (niveau 1 DLS).
SYNTH_PC_EXTERNAL
Le synthé représente une connexion au matériel externe.
SYNTH_PC_SOFTWARESYNTH
Le pilote implémente un synthétiseur logiciel.
SYNTH_PC_MEMORYSIZEFIXED
La taille de mémoire indiquée dans le membre MemorySize est valide et représente la quantité maximale d’exemple de mémoire en octets. Cet indicateur est généralement défini lorsque l’exemple de mémoire n’est pas la mémoire système.
SYNTH_PC_GMINHARDWARE
Le synthé prend en charge l’ensemble audio MIDI général dans le matériel.
SYNTH_PC_GSINHARDWARE
Le synthé prend en charge l’ensemble audio Roland GS dans le matériel.
SYNTH_PC_REVERB
Le synthé prend en charge la réverbération.
SYNTH_PC_DLS2
Le pilote prend en charge les exemples de collections téléchargeables (niveau DLS 2).
SYNTH_PC_SYSTEMMEMORY
Le synthé peut utiliser la mémoire système.
MemorySize
Spécifie la quantité d’exemple de mémoire sur l’appareil (en octets). Ce champ doit contenir la valeur SYNTH_PC_SYSTEMMEMORY si l’appareil utilise la mémoire système pour l’exemple de mémoire sans limitation de la quantité de mémoire allouée.
MaxChannelGroups
Spécifie le nombre maximal de groupes de canaux pris en charge par ce pilote. Chaque groupe de canaux représente un ensemble de 16 canaux MIDI et a associé à lui tout l’état qu’un périphérique matériel MIDI conserverait, ce qui inclut les informations DLS, GM, GS, XG ou d’autres informations de mode. Toutefois, les téléchargements DLS sont par pilote et peuvent être utilisés par n’importe quel groupe de canaux. Cela empêche la gaspiller de la mémoire en téléchargeant plusieurs copies du même exemple DLS, une par groupe de canaux.
MaxVoices
Spécifie le nombre maximal de voix que le périphérique de rendu prend en charge. Si le gestionnaire de propriétés ne parvient pas à fournir un nombre valide pour ce membre, il doit définir le membre sur (ULONG)-1.
MaxAudioChannels
Spécifie le nombre maximal de canaux audio pris en charge par le périphérique de rendu. Si le gestionnaire de propriétés ne parvient pas à fournir un nombre valide pour ce membre, il doit définir le membre sur (ULONG)-1.
EffectFlags
Spécifie les effets que l’appareil de rendu est capable de produire. Ce membre est un champ de bits dont la valeur est égale à zéro ou au niveau du bit OR des bits d’indicateur suivants :
SYNTH_EFFECT_REVERB
Le périphérique de rendu peut produire un effet de réverbération.
SYNTH_EFFECT_CHORUS
L’appareil de rendu peut produire un effet de refrain.
SYNTH_EFFECT_DELAY
Le périphérique de rendu peut produire un effet de retard.
Si l’appareil ne prend en charge aucune de ces fonctionnalités, définissez ce membre sur SYNTH_EFFECT_NONE (zéro).
Description[128]
Contient une description textuelle de l’appareil. Ce membre est un tableau WCHAR contenant une chaîne terminée par null (par exemple, « Microsoft MPU-401 »).
Remarques
La requête get-property KSPROPERTY_SYNTH_CAPS utilise la structure SYNTHCAPS pour récupérer les fonctionnalités d’un appareil de synthétiseur à partir d’un pilote miniport DMus.
SYNTH_CAPS est similaire à la structure DMUS_PORTCAPS, qui est décrite dans la documentation Microsoft Windows SDK.
Dans l’exemple de pilote DMusUART du Kit de pilotes Windows (WDK), le gestionnaire de propriétés KSPROPERTY_SYNTH_CAPS définit les membres de la structure SYNTHCAPS sur les valeurs suivantes :
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;
Dans cet exemple, les valeurs 0xFFFFFFFF indiquent que le gestionnaire n’a aucun moyen de connaître les limites réelles de MaxVoices et MaxAudioChannels , car elles dépendent entièrement de tout synthétiseur externe connecté à l’UART. Ailleurs dans le code, mais pas dans l’exemple précédent, le gestionnaire de propriétés DMusUART définit le membre GUID de la structure SYNTHCAPS sur CLSID_MiniportDriverDMusUART ou CLSID_MiniportDriverDMusUARTCapture. La valeur du membre guid dépend si le nœud cible (de type KSNODETYPE_SYNTHESIZER) de la demande de propriété se trouve sur un chemin de données qui gère le rendu ou la capture des données. Les deux ID de classe sont définis dans le fichier d’en-tête Dmusicks.h.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dmusprop.h (inclure Dmusprop.h) |