Demandes de propriété audio
Les clients d’un pilote audio WdM (Microsoft Windows Driver Model) peuvent envoyer des demandes de propriétés KS aux filtres et broches KS que le pilote a instanciés. Par exemple, un client en mode utilisateur peut envoyer une demande de propriété KS en appelant la fonction DeviceIoControl (voir la documentation Microsoft Windows SDK) avec un code de contrôle d’E/S de IOCTL_KS_PROPERTY. Cette fonction envoie un IRP contenant la demande de propriété à l’objet de filtre ou d’épingle spécifié.
Les pilotes audio prennent en charge les demandes d’obtention, de définition et de support de base sur les propriétés (KSPROPERTY_TYPE_GET, KSPROPERTY_TYPE_SET et KSPROPERTY_TYPE_BASICSUPPORT). Pour plus d’informations, consultez Ensembles de propriétés de pilotes audio.
Un client peut envoyer des requêtes pour trois types de propriétés : propriétés de filtre, propriétés de broche et propriétés de nœud. Pour plus d’informations, consultez Propriétés de filtre, d’épingle et de nœud.
Lors de l’envoi d’une demande de propriété de filtre à un objet de filtre, le client spécifie le filtre cible par son instance handle (voir Fabriques de filtres). De même, lors de l’envoi d’une requête pin-property à un objet pin, la broche cible est spécifiée par son instance handle (voir Pin Factories). Les deux types de requête contiennent une structure KSPROPERTY qui spécifie les éléments suivants :
GUID qui identifie le jeu de propriétés
Index qui identifie un élément de propriété dans le jeu de propriétés spécifié
Indicateurs qui indiquent le type de demande de propriété (get, set ou prise en charge de base)
Les propriétés associées sont regroupées pour former un jeu de propriétés. Une propriété particulière est identifiée par son jeu de propriétés et par un index qui spécifie sa position dans ce jeu.
Une requête node-property contient une structure KSNODEPROPERTY , qui combine une structure KSPROPERTY et un ID de nœud. Selon la propriété de nœud, la cible de la demande de propriété est un filtre instance ou un instance de broche.
Si un filtre peut créer plusieurs instance d’un type de nœud particulier, la cible de la requête est spécifiée par un handle de broche. Le handle identifie le instance de broche au début ou à la fin du chemin de données sur lequel réside le nœud instance. Dans le cas d’un filtre contenant un nœud SOMME ou MUX (voir KSNODETYPE_SUM et KSNODETYPE_MUX), les règles suivantes s’appliquent :
Si la propriété appartient à un nœud situé en aval d’une broche récepteur (entrée) et amont à partir du nœud SOMME ou MUX, la demande de propriété est envoyée à la broche du récepteur.
Si la propriété appartient à un nœud situé en aval d’un nœud SOMME ou MUX et amont à partir d’une broche source (sortie), la demande de propriété est envoyée à la broche source. (En outre, une demande de propriété pour un nœud SOMME ou MUX est envoyée à la broche source.)
Avec ces conventions, un nœud particulier sur un chemin de données particulier peut être identifié de manière unique.
Pour plus d’informations sur l’utilisation de l’API mixer pour parcourir les nœuds d’un chemin de données, consultez Topologie de streaming de noyau vers traduction de l’API Mixeur audio.