为啥 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,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?