Windows WASAPI:IAudioClient->;即使IAudioClient->;IsFormatSupported以相同的格式失败

Windows WASAPI:IAudioClient->;即使IAudioClient->;IsFormatSupported以相同的格式失败,windows,session,audio,wasapi,Windows,Session,Audio,Wasapi,我试图找出特定音频设备在独占模式下支持哪些输出格式。 为此,我使用IAudioClient->IsFormatSupported(),根据文档,它应该可以用于此目的。 不幸的是,对于我尝试传递的几乎每种格式,它都会返回AUDCLNT_E_UNSUPPORTED_格式,默认的双通道44.1khz音频除外 但是,如果我确实尝试初始化audioclient,则在IsFormatSupported()中有一些格式成功,但失败 只是尝试初始化每种格式不是一个选项,因为这可能导致停止来自其他应用程序的音频

我试图找出特定音频设备在独占模式下支持哪些输出格式。 为此,我使用IAudioClient->IsFormatSupported(),根据文档,它应该可以用于此目的。 不幸的是,对于我尝试传递的几乎每种格式,它都会返回AUDCLNT_E_UNSUPPORTED_格式,默认的双通道44.1khz音频除外

但是,如果我确实尝试初始化audioclient,则在IsFormatSupported()中有一些格式成功,但失败

只是尝试初始化每种格式不是一个选项,因为这可能导致停止来自其他应用程序的音频


是否有其他人见过这种行为,或者知道是否有其他方法可以找到特定音频设备支持的格式?

我也见过这种行为。IsFormatSupported似乎只接受Windows中播放设备设置中标记为“受支持”的内容,但Initialize似乎最终会询问驱动程序这是否确实可行

在我的特定情况下,我有一个Xoxar HDAV1.3设置,使用HDMI作为输出。始终有两种播放设备可用:扬声器和S/PDIF直通设备。例如,如果我尝试为S/PDIF播放设备请求6个通道,IsFormatSupported将拒绝它(理论上,S/PDIF仅支持2个通道,这是我在设置中看到的全部),但调用Initialize将成功并起作用(它将退出HDMI,毕竟支持6个通道)。谈论误导性的设备名称

恐怕没有切实可行的办法来解决这个问题