IMMNotificationClient::OnDefaultDeviceChanged 方法 (mmdeviceapi.h)

OnDefaultDeviceChanged 方法通知客户端特定设备角色的默认音频终结点设备已更改。

语法

HRESULT OnDefaultDeviceChanged(
  [in] EDataFlow flow,
  [in] ERole     role,
  [in] LPCWSTR   pwstrDefaultDeviceId
);

parameters

[in] flow

终结点设备的数据流方向。 此参数设置为以下 EDataFlow 枚举值之一:

eRender

eCapture

呈现设备的数据流方向为 eRender。 捕获设备的数据流方向为 eCapture。

[in] role

音频终结点 设备的设备角色 。 此参数设置为以下 ERole 枚举值之一:

eConsole

eMultimedia

eCommunications

[in] pwstrDefaultDeviceId

指向标识音频 终结点设备的终结点 ID 字符串 的指针。 此参数指向包含终结点 ID 的以 null 结尾的宽字符字符串。 字符串在调用期间保持有效。 如果用户已删除或禁用特定角色的默认设备,并且没有其他设备可以担任该角色,则 pwstrDefaultDeviceNULL

返回值

如果该方法成功,则它会返回 S_OK。 如果该方法失败,则会返回错误代码。

注解

这三个输入参数指定新的默认音频终结点设备的数据流方向、设备角色和终结点 ID 字符串。

在 Windows Vista 中,MMDevice API 支持设备角色,但系统提供的用户界面程序不支持。 Windows Vista 中的用户界面使用户能够选择用于呈现的默认音频设备和用于捕获的默认音频设备。 当用户更改默认呈现或捕获设备时,系统将所有三个设备角色 (eConsole、eMultimedia 和 eCommunications) 分配给新设备。 因此,当用户更改默认呈现或捕获设备时,系统将调用客户端的 OnDefaultDeviceChanged 方法三次,三次针对这三个设备角色中的每一个调用一次。

在将来的 Windows 版本中,用户界面可能使用户能够将各个角色分配给不同的设备。 在这种情况下,如果用户仅将一个或两个设备角色的分配更改为新的呈现或捕获设备,则系统将仅调用客户端的 OnDefaultDeviceChanged 方法一次或两次 (即,每个更改的角色) 调用一次。 根据 OnDefaultDeviceChanged 方法对角色更改的响应方式,开发用于在 Windows Vista 中运行的音频应用程序的行为在将来版本的 Windows 中运行时可能会更改。 有关详细信息,请参阅 Windows Vista 中的设备角色

有关实现 OnDefaultDeviceChanged 方法的 代码示例,请参阅 设备事件

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 mmdeviceapi.h

另请参阅

IMMNotificationClient 接口