我正在尝试使用Windows音频 session API在当前音频 session 的枚举中找到默认音频 session 。当前,我在 IAudioSessionControl
角色中引用了音频渲染终结点的默认 session 的 eConsole
以及一个枚举此默认终结点的音频 session 的 IAudioSessionEnumerator
对象,但是我需要能够比较我所使用的IAudioSessionControl
对象与 IAudioSessionControl
返回的IAudioSessionEnumerator::GetSession
对象具有相等性。
我希望可以通过比较IAudioSessionControl
指针的相等性来测试是否相等。当我使用 IAudioSessionControl
多次获取默认 session 的IAudioClient::GetService
时,此方法有效。不幸的是,IAudioClient::GetService
返回的该指针没有出现在IAudioSessionEnumerator
的音频 session 枚举中。同样,即使使用相同的音频 session GUID(IAudioSessionManager::GetAudioSessionControl
)和IAudioSessionControl
值,通过 GUID_NULL
路由多次获取默认音频 session 也不会产生相同的CrossProcessSession
指针。
给定两个IAudioSessionControl
指针,如何测试音频 session 的相等性?是否可以获取给定IAudioSessionControl
对象的音频 session GUID和进程标识符?
最佳答案
查看IAudioSessionControl2::GetSessionIdentifier API,这是音频子系统用来持久化 session 音量的功能。如果要在运行时区分 session (同一应用程序的两个实例同时运行),请检查GetSessionInstanceIdentifier API。
关于c++ - 如何测试 Audio Session 的相等性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6089866/