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 de 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 (DLS Level 1).
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 donnée dans le membre MemorySize est valide et représente la quantité maximale d’échantillon 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 de sons Midi général dans le matériel.
SYNTH_PC_GSINHARDWARE
Le synthé prend en charge le jeu de sons 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 (DLS Level 2).
SYNTH_PC_SYSTEMMEMORY
Le synthé peut utiliser la mémoire système.
MemorySize
Spécifie la quantité d’échantillon 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 sur 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 lui a associé tout l’état qu’un périphérique matériel MIDI conserverait, qui inclut des informations de mode DLS, GM, GS, XG ou autres. 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 mémoire de perdre 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 pris en charge par l’appareil de rendu. Si le gestionnaire de propriétés n’est pas en mesure de 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 l’appareil de rendu. Si le gestionnaire de propriétés n’est pas en mesure de 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 OU des bits d’indicateur suivants :
SYNTH_EFFECT_REVERB
L’appareil de rendu peut produire un effet de réverbération.
SYNTH_EFFECT_CHORUS
L’appareil de rendu peut produire un effet de chœur.
SYNTH_EFFECT_DELAY
L’appareil de rendu peut produire un effet de retard.
Si l’appareil ne prend pas 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 du Kit de développement logiciel (SDK) Microsoft Windows.
Dans l’exemple de pilote DMusUART dans le 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 de 0xFFFFFFFF indiquent que le gestionnaire n’a aucun moyen de connaître les MaxVoices réels et limites de MaxAudioChannels, car elles dépendent complètement de n’importe quel synthétiseur externe doit être 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 guid membre de la structure SYNTHCAPS sur CLSID_MiniportDriverDMusUART ou CLSID_MiniportDriverDMusUARTCapture. L’un des Guid membre est défini selon que le nœud cible (de type KSNODETYPE_SYNTHESIZER) pour la requête de propriété se trouve sur un chemin de données qui gère le rendu des données ou capture des données. Les deux ID de classe sont définis dans le fichier d’en-tête Dmusicks.h.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dmusprop.h (include Dmusprop.h) |