核心音频接口

核心音频 SDK 的编程参考包括以下接口:

MMDevice API

Windows 多媒体设备 (MMDevice) API 使音频客户端能够发现音频终结点设备,确定它们的功能,并为这些设备创建驱动程序实例。头文件 Mmdeviceapi.h 定义了 MMDevice API 中的接口。 有关详细信息,请参阅关于 MMDevice API

下表列出了适用于 Windows Vista 的核心音频 SDK 提供的 MMDevice 接口。

接口 说明
IMMDevice 表示音频设备。
IMMDeviceCollection 表示音频设备的集合。
IMMDeviceEnumerator 提供用于枚举音频设备的方法。
IMMEndpoint 表示音频终结点设备。
IMMNotificationClient 在添加或删除音频终结点设备、设备状态或属性发生变化或分配给设备的默认角色发生变化时提供通知。

WASAPI

Windows 音频会话 API (WASAPI) 让客户端应用程序能够管理应用程序与音频终结点设备之间的音频数据流。 头文件 Audioclient.h 和 Audiopolicy.h 定义了 WASAPI 接口。 有关详细信息,请参阅关于 WASAPI

下表列出了适用于 Windows Vista 及更高版本的核心音频 SDK 提供的 WASAPI 接口。

接口 说明
IActivateAudioInterfaceAsyncOperation 表示激活 WASAPI 接口的异步操作,并提供检索激活结果的方法。
从 Windows 8 开始适用。
IActivateAudioInterfaceCompletionHandler 提供一个回调,指示 WASAPI 接口的激活已完成。
从 Windows 8 开始适用。
IAudioCaptureClient 让客户端能够从捕获终结点缓冲区读取输入数据。
IAudioClient 让客户端能够在音频应用程序和音频引擎或音频终结点设备的硬件缓冲器之间创建和初始化音频流。
IAudioClock 让客户端能够监控流中的数据速率和流中的当前位置。
IAudioClock2
让客户端能够获取当前设备位置。
IAudioClockAdjustment
让客户端能够设置流的采样率。
IAudioRenderClient 让客户端能够将输出数据写入呈现终结点缓冲区。
IAudioSessionControl 让客户端能够配置音频会话的控制参数并监控会话中的事件。
IAudioSessionControl2
让客户端能够获取音频会话的相关信息。
IAudioSessionManager 让客户端能够访问跨进程和特定进程音频会话的会话控件和音量控件。
IAudioSessionManager2
管理所有子混合,包括子混合的枚举和通知。 它还支持闪避通知。
IAudioSessionEnumerator
让客户端能够枚举音频会话。
IAudioStreamVolume 让客户端能够控制和监控音频流中所有通道的音量水平。
IChannelAudioVolume 让客户端能够控制流所属音频会话中所有通道的音量水平。
ISimpleAudioVolume 让客户端能够控制音频会话的主音量水平。
IAudioSessionEvents 提供会话相关事件的通知,如音量水平、显示名称和会话状态的变化。
IAudioSessionNotification
在会话发生变化时发送通知。
IAudioVolumeDuckNotification
发送有关待定系统闪避更改的通知。

DeviceTopology API

DeviceTopology API 为客户端应用程序提供了遍历音频呈现和捕获设备的功能硬件拓扑的功能。 头文件 Devicetopology.h 定义了 DeviceTopology API 中的接口。 有关详细信息,请参阅设备拓扑DeviceTopology API

下表列出了适用于 Windows Vista 及更高版本的核心音频 SDK 提供的 DeviceTopology 接口。

接口 说明
IAudioAutoGainControl 提供对硬件自动增益控件 (AGC) 的访问。
IAudioBass 提供对硬件低音控件的访问。
IAudioChannelConfig 提供对硬件通道配置控件的访问。
IAudioInputSelector 提供对硬件多路复用器控件(输入选择器)的访问。
IAudioLoudness 提供对“响度”补偿控件的访问。
IAudioMidrange 提供对硬件中音控件的访问。
IAudioMute 提供对硬件静音控件的访问。
IAudioOutputSelector 提供对硬件信号分离器控件(输出选择器)的访问。
IAudioPeakMeter 提供对硬件峰值表控件的访问。
IAudioTreble 提供对硬件高音控件的访问。
IAudioVolumeLevel 提供对硬件音量控件的访问。
IConnector 表示组件之间的连接点。
IControlInterface 表示部件(子单元或连接器)上的控制接口。
IDeviceSpecificProperty 表示连接器或子单元的特定设备属性。
IDeviceTopology 提供对音频设备拓扑的访问。
IKsFormatSupport 提供有关音频设备和系统内存之间软件配置的 I/O 连接(通常是 DMA 通道)所支持的音频数据格式的信息。
IKsJackDescription 提供有关音频适配器上的设备与外部或内部终结点设备(如麦克风或 CD 播放器)之间提供物理连接的插孔或内部连接器的信息。
IKsJackDescription2
提供对终结点设备连接器的 KSPROPERTY_JACK_DESCRIPTION2 属性的便捷访问。
IKsJackSinkInformation
如果硬件支持插孔接收器,则提供其信息。
IPart 表示设备拓扑结构的一部分(连接器或子单元)。
IPartsList 表示部件(连接器和子单元)的列表。
IPerChannelDbLevel 表示一个通用子单元控制接口,可对音频流或音频流中某一频段的音量(以分贝为单位)按通道进行控制。
ISubunit 表示客户端与音频终结点设备之间数据路径上的硬件子单元(例如音量水平控件)。
IControlChangeNotify 当部件(连接器或子单元)的状态发生变化时提供通知。

EndpointVolume API

EndpointVolume API 让专门的客户端能够控制和监控音频终结点设备的音量水平。 头文件 Endpointvolume.h 定义了 EndpointVolume API 中的接口。 有关详细信息,请参阅 EndpointVolume API

下表列出了适用于 Windows Vista 的核心音频 SDK 提供的 EndpointVolume 接口。

Interface 描述
IAudioEndpointVolume 表示对音频终结点设备之间音频流的音量控制。
IAudioEndpointVolumeEx
为设备终结点之间的音频流提供音量控制。
IAudioMeterInformation 表示与音频终结点设备之间的音频流峰值。
IAudioEndpointVolumeCallback 当音频终结点设备的音量水平或静音状态发生变化时提供通知。

编程参考