Gestionnaires de Data-Intersection par défaut

Le gestionnaire d’intersection de données propriétaire d’un adaptateur (méthode IMiniport::D ataRangeIntersection de l’objet pilote miniport) peut refuser d’effectuer l’case activée d’intersection de données en retournant le code STATUS_NOT_IMPLEMENTED status. Dans ce cas, le gestionnaire d’intersection de données par défaut du pilote de port effectue l’case activée au nom de l’adaptateur.

Vous pouvez implémenter un gestionnaire d’intersection de données minimal pour votre pilote d’adaptateur en tant que méthode DataRangeIntersection qui refuse toutes les demandes d’intersection de données en retournant STATUS_NOT_IMPLEMENTED.

L’implémentation actuelle du gestionnaire par défaut du pilote de port est limitée dans les types de plages de données qu’elle peut gérer :

  • Formats de données PCM uniquement

  • Seuls les flux audio mono et stéréo

Un pilote d’adaptateur qui prend en charge les formats non PCM ou multicanal doit implémenter un gestionnaire d’intersection de données propriétaire au lieu de s’appuyer sur le pilote de port pour gérer les intersections de données pour ces formats.

En outre, le gestionnaire par défaut prend uniquement en charge les formats audio qui peuvent être spécifiés par une structure KSDATAFORMAT_DSOUND ou KSDATAFORMAT_WAVEFORMATEX . Il ne prend pas en charge aucun format contenant une structure WAVEFORMATEXTENSIBLE , ce qui est nécessaire, par exemple, pour spécifier le masque de canal pour un format avec plus de deux canaux.

Lors du choix d’un format commun à partir de l’intersection entre deux plages de données, le gestionnaire par défaut du pilote de port sélectionne toujours la valeur la plus élevée dans la région d’intersection de chaque paramètre :

  • Si l’intersection couvre plusieurs fréquences d’échantillonnage valides (11, 22 et 44 kHz, par exemple), le gestionnaire par défaut sélectionne la fréquence la plus élevée.

  • Si l’intersection s’étend sur plusieurs bits valides par exemple (8, 16 et 32 bits, par exemple), le gestionnaire par défaut sélectionne la plus grande valeur.

  • Si l’intersection s’étend à la fois sur les formats mono et stéréo, le gestionnaire par défaut choisit stéréo.

Si le gestionnaire par défaut sélectionne un format qui n’est pas satisfaisant, le pilote d’adaptateur a la possibilité de rejeter le format en échouant l’appel NewStream (par exemple, voir IMiniportWavePci::NewStream) lorsque SysAudio tente de créer une broche récepteur avec le format. Si l’appel échoue, SysAudio ne poursuit pas la recherche d’intersections de données. Au lieu de cela, il tente de créer une connexion en itérant dans une liste des formats PCM pris en charge par les filtres système tels que KMixer jusqu’à ce qu’il en trouve un que la broche récepteur de l’adaptateur peut également prendre en charge. La liste est d’abord triée avec des formats de qualité supérieure. Comme précédemment, l’adaptateur rejette les formats insatisfaisants dans la liste en échouant les appels NewStream pour ces formats.