c++ - 如何测试 Audio Session 的相等性

标签 c++ winapi com core-audio wasapi

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

相关文章:

c++ - 获取 Windows 监视器的唯一标识符

c++ - #include 重复查找的任何工具?

c++ - 外部库 : Get cursor image

c++ - 编译时间递归和条件

c++ - 因为调用RegOpenKeyEx导致一长串依赖关系正常吗?

com - 在 F# 中嵌入互操作类型

c++ - i+v[i++]的计算顺序是什么

delphi - 以编程方式共享文件夹并撤销它。 (德尔福7)

vb.net - 兄弟标签打印COM引用错误

c++ - 将 COM dll 与非托管 C++ 一起使用