Enumerazione dei dispositivi audio
La prima attività di un'applicazione audio client consiste nel trovare un dispositivo audio adatto da usare. L'API MMDevice consente ai client di individuare i dispositivi endpoint audio nel sistema e determinare quali dispositivi sono adatti per l'uso dell'applicazione. Questa API consente ai client di recuperare le raccolte dei dispositivi endpoint disponibili e ottenere le funzionalità di ogni dispositivo. Il file di intestazione Mmdeviceapi.h definisce le interfacce nell'API MMDevice.
Un adattatore audio può contenere diversi dispositivi, ad esempio un dispositivo di rendering wave e un dispositivo di acquisizione delle onde. Si tratta di dispositivi adattatori anziché dispositivi endpoint. Come accennato in precedenza, i dispositivi adattatori vengono registrati dal gestore Plug and Play, a differenza dei dispositivi endpoint registrati da Endpoint Manager. Ogni dispositivo adattatore supporta in genere uno o più dispositivi endpoint. Un dispositivo endpoint di rendering (ad esempio, cuffie) può ricevere un flusso di dati audio da un'applicazione client e un dispositivo endpoint di acquisizione (ad esempio, un microfono) può inviare un flusso audio a un'applicazione client.
Prima di enumerare i dispositivi endpoint nel sistema, il client deve chiamare la funzione CoCreateInstance di Windows per creare un enumeratore di dispositivi. Un enumeratore di dispositivi è un oggetto con un'interfaccia IMMDeviceEnumerator . Per informazioni su CoCreateInstance, vedere la documentazione di Windows SDK.
Il client chiama il metodo IMMDeviceEnumerator::EnumAudioEndpoints per creare una raccolta di oggetti endpoint. Ogni oggetto endpoint rappresenta un dispositivo endpoint audio nel sistema. In questa chiamata, il client specifica se la raccolta deve contenere tutti i dispositivi di rendering nel sistema, tutti i dispositivi di acquisizione o entrambi.
Una raccolta di dispositivi è un oggetto con un'interfaccia IMMDeviceCollection . Ogni elemento di una raccolta di dispositivi è un oggetto endpoint con almeno le due interfacce seguenti:
- Interfaccia IMMDevice . Un client ottiene un riferimento all'interfaccia IMMDevice di un oggetto endpoint in una raccolta di dispositivi chiamando il metodo IMMDeviceCollection::Item.
- Interfaccia IMMEndpoint . Un client ottiene un riferimento all'interfaccia IMMEndpoint di un oggetto endpoint chiamando il metodo IMMDevice::QueryInterface .
Dopo aver recuperato una raccolta di dispositivi endpoint, il client può eseguire una query sulle proprietà dei singoli dispositivi nella raccolta per determinare l'idoneità per l'uso. Per un esempio di codice che illustra come enumerare i dispositivi endpoint ed eseguire query nelle relative proprietà, vedere Proprietà del dispositivo.
Dopo aver selezionato un dispositivo appropriato, il client può chiamare il metodo IMMDevice::Activate per attivare le interfacce specifiche del dispositivo in WASAPI, l'API DeviceTopology e l'API EndpointVolume.
Argomenti correlati