Énumération des périphériques audio

La première tâche d’une application audio cliente consiste à trouver un périphérique audio approprié à utiliser. L’API MMDevice permet aux clients de découvrir les appareils de point de terminaison audio dans le système et de déterminer les appareils appropriés pour l’application à utiliser. Cette API permet aux clients de récupérer des 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.

Un adaptateur audio peut contenir plusieurs appareils, par exemple un appareil de rendu des ondes et un appareil de capture d’ondes. Il s’agit d’appareils adaptateurs plutôt que d’appareils de point de terminaison. Comme mentionné précédemment, les périphériques adaptateurs sont inscrits par le gestionnaire de Plug-and-Play, contrairement aux appareils de point de terminaison, qui sont inscrits par le gestionnaire de points de terminaison. Chaque périphérique adaptateur prend généralement en charge un ou plusieurs appareils de point de terminaison. Un appareil 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 du Kit de développement logiciel (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 appareil 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 d’appareils 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 d’appareils 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 appareils individuels dans le regroupement pour déterminer leur adéquation à l’utilisation. Pour obtenir un exemple de code qui montre comment énumérer des 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 DeviceTopology et l’API EndpointVolume.

Périphériques de point de terminaison audio