Énumération des périphériques audio
La première tâche d’une application audio client consiste à trouver un périphérique audio approprié à utiliser. L' API MMDevice permet aux clients de découvrir les périphériques de point de terminaison audio dans le système et de déterminer les appareils qui conviennent à l’application. Cette API permet aux clients de récupérer les regroupements des appareils de point de terminaison disponibles et d’obtenir les fonctionnalités de chaque appareil. Le fichier d’en-tête MMDeviceAPI. h définit les interfaces dans l’API MMDevice.
Une carte audio peut contenir plusieurs appareils, par exemple, un périphérique de rendu d’onde et un périphérique de capture d’onde. Il s’agit des périphériques d’adaptateur plutôt que des appareils de point de terminaison. Comme mentionné précédemment, les périphériques d’adaptateur sont inscrits par le gestionnaire de Plug-and-Play, contrairement aux appareils de point de terminaison qui sont inscrits par le gestionnaire des points de terminaison. Chaque périphérique d’adaptateur prend généralement en charge un ou plusieurs périphériques de point de terminaison. Un périphérique de point de terminaison de rendu (par exemple, un casque) peut recevoir un flux de données audio à partir d’une application cliente, et un périphérique de point de terminaison de capture (par exemple, un microphone) peut envoyer un flux audio à une application cliente.
avant d’énumérer les appareils de point de terminaison dans le système, le client doit d’abord appeler la fonction Windows CoCreateInstance pour créer un énumérateur d’appareil. Un énumérateur d’appareil est un objet avec une interface IMMDeviceEnumerator . pour plus d’informations sur CoCreateInstance, consultez la documentation SDK Windows.
Le client appelle la méthode IMMDeviceEnumerator :: EnumAudioEndpoints pour créer une collection d’objets de point de terminaison. Chaque objet de point de terminaison représente un périphérique de point de terminaison audio dans le système. Dans cet appel, le client spécifie si la collection doit contenir tous les périphériques de rendu du système, tous les périphériques de capture, ou les deux.
Une collection d’appareils est un objet avec une interface IMMDeviceCollection . Chaque élément d’une collection de périphériques est un objet de point de terminaison avec au moins les deux interfaces suivantes :
- Interface IMMDevice . Un client obtient une référence à l’interface IMMDevice d’un objet de point de terminaison dans une collection de périphériques en appelant la méthode IMMDeviceCollection :: Item .
- Interface IMMEndpoint . Un client obtient une référence à l’interface IMMEndpoint d’un objet de point de terminaison en appelant la méthode IMMDevice :: QueryInterface .
Après avoir récupéré une collection d’appareils de point de terminaison, le client peut interroger les propriétés des différents appareils dans le regroupement afin de déterminer leur aptitude à l’emploi. Pour obtenir un exemple de code qui montre comment énumérer les appareils de point de terminaison et interroger leurs propriétés, consultez Propriétés de l' appareil.
Après avoir sélectionné un appareil approprié, le client peut appeler la méthode IMMDevice :: Activate pour activer les interfaces spécifiques à l’appareil dans WASAPI, l' API DeviceTopologyet l' API EndpointVolume.