为啥 AllocateStreamingResources 会失败,错误代码为 0x80004005?
Posted
技术标签:
【中文标题】为啥 AllocateStreamingResources 会失败,错误代码为 0x80004005?【英文标题】:Why would AllocateStreamingResources fail with error code 0x80004005?为什么 AllocateStreamingResources 会失败,错误代码为 0x80004005? 【发布时间】:2020-11-08 23:10:24 【问题描述】:我正在尝试让 AEC DMO 的演示工作 (found here)。它有效,但仅在某些机器上有效。在那些失败的机器上,AllocateStreamingResources 失败,错误代码为 0x80004005。确切的代码行是here。
我在演示代码生成的 .exe 和它失败的机器上运行了依赖遍历器,没有检测到依赖失败。报告 AllocateStreamingResources 失败后,代码什么也不做。
我正在使用以下参数运行:-out mic_out.pcm -mod 0 -spkdev 0 -micdev 0。
所有机器都有功能正常的扬声器和麦克风。当我运行应用程序时,声音从扬声器中播放出来。有什么想法吗?
【问题讨论】:
It works, but only on certain machines. On those machines it fails on
哪些机器成功,哪些机器失败? 0x80004005
表示未指定的失败。我无法在我的机器上重现(Windows 10 20H2)。
@StriveSun-MSFT:感谢您的回复。它们是英特尔 NUC,带有我们发布的产品的 Windows 10.0.17763 映像。该图像在功能方面相对锁定(如果有帮助,我可以得到确切的细节),但是是否有可以禁用的 Windows 功能会导致 DMO 以这种方式出错?例如,我可以让 Windows Media Player 在这些机器上启动并播放 WAV 文件(这就是我在这些设备上发出声音的方式)。所以我知道很多工作。我在所有其他机器上测试过示例代码,它可以工作,除了这些 NUC。
@StriveSun-MSFT:我在理解问题的本质方面取得了更多进展。它不是基本图像,但它似乎是我们作为麦克风连接到 NUC 的 Azure Kinect。移除 Azure Kinect 并使用现成的 USB 或基于插孔的麦克风,它可以在这些机器上运行。在 USB 总线 + Azure Kinect 方面是否有一些限制因素导致 DMO 失败?正如我所说,我至少可以让另一个 USB 麦克风工作。
问题可能与您使用 DMO 的设备有关。媒体类型详细信息、设备功能等。很难确定真正的原因,但最终你需要抓住它。 AllocateStreamingResources
只是操作初始化时的一个方法,该方法并没有说明太多错误。
@StriveSun-MSFT:让我借此机会游说您游说微软的权力不要让 Windows API 产生未指定的故障。尝试使用谷歌搜索此错误代码 - 尝试解决与其相关的问题已浪费了数千甚至数百万小时。如果我们被告知实际问题是什么(Windows 必须知道),那可能会大大减少。谢谢,现在离开我的肥皂盒 :)
【参考方案1】:
我已经解决了类似的问题:
-
在设备管理器中卸载音频设备
重启
【讨论】:
以上是关于为啥 AllocateStreamingResources 会失败,错误代码为 0x80004005?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?