终结点 ID 字符串
在 Windows Vista 中,系统会生成终结点 ID 字符串来识别系统中的音频终结点设备。 终结点 ID 字符串是以 null 结尾的宽字符字符串。 特定音频终结点设备的终结点 ID 字符串可在系统中的所有音频终结点设备中唯一标识该设备。
如果系统包含两个或多个相同的音频适配器设备,则相应的音频终结点设备将具有相同的友好名称,但每个终结点设备都将具有唯一的终结点 ID 字符串。 有关获取终结点设备友好名称的详细信息,请参阅设备属性。
在获得音频终结点设备的 IMMDevice 接口实例后,客户端可以调用 IMMDevice::GetId 方法来获取设备的终结点 ID 字符串。 客户端可以通过调用 IMMDeviceEnumerator::GetDevice 方法,在稍后时间或不同进程中使用终结点 ID 字符串来创建音频终结点设备实例。
当任何音频终结点设备的状态发生变化时,客户端都可以安排接收通知。 要接收通知,客户端需要实现 IMMNotificationClient 接口,并向 MMDevice API 注册该接口。 当终结点设备的状态发生变化时,MMDevice API 会调用客户端 EDataFlow 接口中的相应方法。 该方法的输入参数之一是终结点 ID 字符串,用于标识状态已发生变化的终结点设备。 有关 EDataFlow 的详细信息,请参阅设备事件。
传统音频 API(如 DirectSound 和 Windows 多媒体功能)都有自己的接口,用于枚举和识别音频设备。 在 Windows Vista 中,这些接口已被扩展为提供终结点 ID 字符串,用于标识终结点设备,而这些设备是 API 所提供的设备抽象的基础。
在 DirectSound 设备枚举过程中,DirectSound 会为其枚举的每个设备提供终结点 ID 字符串。 有关详细信息,请参阅传统音频应用程序的音频事件。
要获取传统波形设备的终结点 ID 字符串,可使用 waveOutMessage 或 waveInMessage 函数向波形设备驱动程序发送 DRV_QUERYFUNCTIONINSTANCEID 消息。 有关使用此信息的代码示例,请参阅传统 Windows 多媒体应用程序的设备角色。
有关使用核心音频 API 的功能来增强使用传统音频 API 的应用程序的详细信息,请参阅与传统音频 API 的互操作性。
客户端应将终结点 ID 字符串的内容视为不透明。 也就是说,客户端不应尝试解析字符串的内容来获取有关设备的信息。 原因是字符串格式并未定义,在不同的 MMDevice API 系统模块实现中可能会发生变化。
终结点 ID 字符串的生命周期与设备安装息息相关。 如果用户升级了设备驱动程序,或者用户卸载了设备并重新安装,设备的终结点 ID 字符串就会发生变化。 但是,终结点 ID 字符串在系统重启时保持不变,而 USB 音频设备的终结点 ID 字符串在用户插拔设备时也会保持不变。
相关主题