枚举音频设备

客户端音频应用程序的首要任务是找到合适的音频设备。 MMDevice API 可让客户端发现系统中的音频终结点设备,并确定哪些设备适合应用程序使用。 通过该 API,客户端可以检索可用终结点设备的集合,并获取每个设备的功能。 头文件 Mmdeviceapi.h 定义了 MMDevice API 中的接口。

音频适配器可能包含多个设备 — 例如一个波形呈现设备和一个波形捕获设备。 这些是适配器设备,而不是终结点设备。 如前所述,适配器设备由即插即用管理器注册,而终结点设备则由终结点管理器注册。 每个适配器设备通常支持一个或多个终结点设备。 呈现终结点设备(如耳机)可从客户端应用程序接收音频流,而捕获终结点设备(如麦克风)可向客户端应用程序发送音频流。

在枚举系统中的终结点设备之前,客户端必须首先调用 Windows CoCreateInstance 函数来创建设备枚举器。 设备枚举器是一个具有 IMMDeviceEnumerator 接口的对象。 有关 CoCreateInstance的信息,请参阅 Windows SDK 文档。

客户端调用 IMMDeviceEnumerator::EnumAudioEndpoints 方法来创建终结点对象的集合。 每个终结点对象代表系统中的一个音频终结点设备。 在此调用中,客户端指定集合应包含系统中的所有呈现设备、所有捕获设备还是两者。

设备集合是一个具有 IMMDeviceCollection 接口的对象。 设备集合中的每一项都是一个终结点对象,至少具有以下两个接口:

在检索到终结点设备集合后,客户端可以查询集合中各个设备的属性,以确定它们是否适合使用。 有关如何枚举终结点设备并查询其属性的代码示例,请参阅设备属性

选择合适的设备后,客户端可调用 IMMDevice::Activate 方法来激活 WASAPIDeviceTopology APIEndpointVolume API 中特定于设备的接口。

音频终结点设备