我正在尝试使用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/

10-11 22:08