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