Audioapparaten opsommen
De eerste taak van een clientaudiotoepassing is om een geschikt audioapparaat te vinden dat moet worden gebruikt. Met de MMDevice-API kunnen clients de audio-eindpuntapparaten in het systeem detecteren en bepalen welke apparaten geschikt zijn voor de toepassing die moet worden gebruikt. Met deze API kunnen clients verzamelingen van de beschikbare eindpuntapparaten ophalen en de mogelijkheden van elk apparaat ophalen. Het headerbestand Mmdeviceapi.h definieert de interfaces in de MMDevice-API.
Een audioadapter kan verschillende apparaten bevatten, bijvoorbeeld een wave-renderingapparaat en een wave-captureapparaat. Dit zijn adapterapparaten in plaats van eindpuntapparaten. Zoals eerder vermeld, worden adapterapparaten geregistreerd door Plug en Play Manager, in tegenstelling tot eindpuntapparaten, die zijn geregistreerd door endpoint manager. Elk adapterapparaat ondersteunt doorgaans een of meer eindpuntapparaten. Een renderingeindpuntapparaat (bijvoorbeeld hoofdtelefoons) kan een stroom audiogegevens ontvangen van een clienttoepassing en een apparaat voor het vastleggen van eindpunten (bijvoorbeeld een microfoon) kan een audiostream verzenden naar een clienttoepassing.
Voordat u de eindpuntapparaten in het systeem opsommen, moet de client eerst de Windows CoCreateInstance-functie aanroepen om een apparaat-opsomming te maken. Een apparaat-enumerator is een object met een IMMDeviceEnumerator interface. Zie de Windows SDK-documentatie voor meer informatie over CoCreateInstance.
De client roept de methode IMMDeviceEnumerator::EnumAudioEndpoints methode aan om een verzameling eindpuntobjecten te maken. Elk eindpuntobject vertegenwoordigt een audio-eindpuntapparaat in het systeem. In deze aanroep geeft de client aan of de verzameling alle renderingapparaten in het systeem, alle opnameapparaten of beide moet bevatten.
Een apparaatverzameling is een object met een IMMDeviceCollection interface. Elk item in een apparaatverzameling is een eindpuntobject met ten minste de volgende twee interfaces:
- Een IMMDevice interface. Een client verkrijgt een verwijzing naar de IMMDevice interface van een eindpuntobject in een apparaatverzameling door de methode IMMDeviceCollection::Item aan te roepen.
- Een interface van IMMEndpoint. Een client verkrijgt een verwijzing naar de IMMEndpoint-interface van een eindpuntobject door de methode IMMDevice::QueryInterface aan te roepen.
Na het ophalen van een verzameling eindpuntapparaten kan de client de eigenschappen van de afzonderlijke apparaten in de verzameling opvragen om de geschiktheid voor gebruik te bepalen. Zie Apparaateigenschappenvoor een codevoorbeeld waarin wordt getoond hoe u eindpuntapparaten opsommen en hun eigenschappen opvraagt.
Nadat een geschikt apparaat is geselecteerd, kan de client de IMMDevice::Activate methode aanroepen om de apparaatspecifieke interfaces te activeren in WASAPI-, de DeviceTopology-APIen de EndpointVolume-API.
Verwante onderwerpen