关于 MMDevice API

Windows 多媒体设备 (MMDevice) API 使音频客户端能够发现音频终结点设备、确定其功能并为这些设备创建驱动程序实例。

头文件 Mmdeviceapi.h 定义了 MMDevice API 中的接口。

MMDevice API 由多个接口组成。 其中第一个是 IMMDeviceEnumerator 接口。 要访问 MMDevice API 中的接口,客户端可通过调用 CoCreateInstance 函数来获取设备枚举器对象的 IMMDeviceEnumerator 接口引用,如下代码片段所示:

  const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
  const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
  hr = CoCreateInstance(
         CLSID_MMDeviceEnumerator, NULL,
         CLSCTX_ALL, IID_IMMDeviceEnumerator,
         (void**)&pEnumerator);

在前面的代码片段中,CLSID_MMDeviceEnumerator 和 IID_IMMDeviceEnumerator 是作为属性附加到 MMDeviceEnumerator 类对象和 IMMDeviceEnumerator 接口的 GUID 值。 CoCreateInstance 调用通过引用来传递这些值。 变量 hr 的类型为 HRESULT,变量 pEnumerator 是指向设备枚举器对象的 IMMDeviceEnumerator 接口的指针。 IMMDeviceEnumerator 提供了用于枚举音频终结点设备的方法。 有关 __uuidof 操作符、CoCreateInstance 函数和 CLSCTX_Xxx 常量的信息,请参阅 Windows SDK 文档。

通过 IMMDeviceEnumerator 接口,客户端可以获取 MMDevice API 中其他接口的引用。 MMDevice API 实现了以下接口。

接口 说明
IMMDevice 表示音频设备。
IMMDeviceCollection 表示音频设备的集合。
IMMDeviceEnumerator 提供用于枚举音频设备的方法。
IMMEndpoint 表示音频终结点设备。

 

此外,需要通知音频终结点设备状态变化的 MMDevice API 客户端应实现以下接口。

接口 说明
IMMNotificationClient 在添加或删除音频终结点设备、设备状态或属性发生变化或分配给设备的默认角色发生变化时提供通知。

 

音频终结点设备

编程参考