DeviceTopology-API
Weitere Informationen finden Sie unter Microsoft High Quality Voice Capture DMO Sample.
Die DeviceTopology-API bietet Clientanwendungen die Möglichkeit, die funktionalen Hardwaretopologien von Audiorendering- und Erfassungsgeräten zu durchlaufen. Über die Schnittstellen und Methoden in der DeviceTopology-API können Clients die funktionalen Untereinheiten (z. B. volume control) ermitteln, die sich entlang der Datenpfade befinden, die zu und von Audioendpunktgerätenführen. Clients können die internen Topologien von Audioadaptergeräten und Audioendpunktgeräten durchlaufen und die Verbindungen durchlaufen, die ein Gerät mit einem anderen verbinden. Weitere Informationen finden Sie unter Gerätetopologien.
Die Headerdatei Devicetopology.h definiert die Schnittstellen in der DeviceTopology-API.
Um auf die DeviceTopology-API-Schnittstellen zuzugreifen, ruft ein Client zunächst einen Verweis auf die IDeviceTopology-Schnittstelle für ein Audioendpunktgerät ab, indem er die folgenden Schritte vornimmt:
- Rufen Sie mithilfe einer der unter IMMDevice-Schnittstelle beschriebenenVerfahren einen Verweis auf die IMMDevice-Schnittstelle für ein Audioendpunktgerät ab.
- Rufen Sie die IMMDevice::Activate-Methode auf, wobei der Parameter iid auf REFIID IID _ IDeviceTopology festgelegt ist.
Der Client kann Verweise auf die anderen Schnittstellen in der DeviceTopology-API abrufen, indem er die Methoden in der IDeviceTopology-Schnittstelle aufruft.
Die DeviceTopology-API implementiert die folgenden Schnittstellen.
| Schnittstelle | BESCHREIBUNG |
|---|---|
| IAudioAutoGainControl | Ermöglicht den Zugriff auf eine automatische Hardwaregewinnsteuerung (Automatic Gain Control, AGC). |
| IAudioBass | Ermöglicht den Zugriff auf eine Hardwaresteuerung auf Hardwareebene. |
| IAudioChannelConfig | Ermöglicht den Zugriff auf eine Hardwarekanalkonfigurationssteuerung. |
| IAudioInputSelector | Ermöglicht den Zugriff auf ein Hardware-Multiplexer-Steuerelement (Eingabeselektor). |
| IAudioLoudness | Ermöglicht den Zugriff auf eine "Lautstärke"-Kompensationssteuerung. |
| IAudioMidrange | Ermöglicht den Zugriff auf eine Hardwaresteuerung auf mittlerer Ebene. |
| IAudioMute | Ermöglicht den Zugriff auf ein Hardware-Mute-Steuerelement. |
| IAudioOutputSelector | Ermöglicht den Zugriff auf ein Hardwaredemultiplexer-Steuerelement (Ausgabeselektor). |
| IAudioPeakMeter | Ermöglicht den Zugriff auf ein Hardware-Peak-Meter-Steuerelement. |
| IAudioTreble | Ermöglicht den Zugriff auf eine Hardwaretreble-Level-Steuerung. |
| IAudioVolumeLevel | Ermöglicht den Zugriff auf eine Hardwarevolumesteuerung. |
| IConnector | Stellt einen Verbindungspunkt zwischen Komponenten dar. |
| IControlInterface | Stellt eine Steuerelementschnittstelle für einen Teil (Untereinheit oder Connector) dar. |
| IDeviceSpecificProperty | Stellt eine gerätespezifische Eigenschaft eines Connectors oder einer Untereinheit dar. |
| IDeviceTopology | Ermöglicht den Zugriff auf die Topologie eines Audiogeräts. |
| IKsFormatSupport | Stellt Informationen zu den Audiodatenformaten bereit, die von einer softwarekonfigurierten E/A-Verbindung (in der Regel einem DMA-Kanal) zwischen dem Audiogerät und dem Systemspeicher unterstützt werden. |
| IKsJackDescription | Stellt Informationen zu den Buchsen oder internen Connectors bereit, die eine physische Verbindung zwischen einem Gerät auf einem Audioadapter und einem externen oder internen Endpunktgerät (z. B. einem Mikrofon oder CD-Player) bereitstellen. |
| Ipart | Stellt einen Teil (Connector oder Untereinheit) einer Gerätetopologie dar. |
| IPartsList | Stellt eine Liste von Teilen (Connectors und Untereinheiten) dar. |
| IPerChannelDbLevel | Stellt eine generische Untereinheitssteuerungsschnittstelle dar, die kanalspezifische Steuerungen über die Lautstärkeebene eines Audiodatenstroms oder eines Frequenzbands in einem Audiostream in Decibeln bereitstellt. |
| ISubunit | Stellt eine Hardwareuntereinheit (z. B. eine Steuerung auf Volumeebene) dar, die sich im Datenpfad zwischen einem Client und einem Audioendpunktgerät befindet. |
DeviceTopology-API-Clients, die eine Benachrichtigung über Steuerungsänderungsereignisse in Connectors und Untereinheiten erfordern, sollten die folgende Schnittstelle implementieren.
| Schnittstelle | BESCHREIBUNG |
|---|---|
| IControlChangeNotify | Stellt Benachrichtigungen bereit, wenn sich der Status eines Teils (Connector oder Untereinheit) ändert. |