DirectX12:创建 IDXGIFactory 时 dxgi dll 灾难性失败

问题描述

我正在尝试使用 CreateFactory2 函数初始化 IdxgiFactory4,但这会引发错误

onecore\windows\directx\database\helperlibrary\lib\perappusersettingsqueryimpl.cpp(121)\dxgi.dll!00007FFBA0D6D7F8: (caller: 00007FFBA0D4D167) ReturnHr(1) tid(64d0FFFFastrophic failure) onecore\windows\directx\database\helperlibrary\lib\perappusersettingsqueryimpl.cpp(98)\dxgi.dll!00007FFBA0D6D4D0: (caller: 00007FFBA0D3E221) ReturnHr(2) tid(64d8) 80000 onecore\windows\directx\database\helperlibrary\lib\directxdatabasehelper.cpp(999)\dxgi.dll!00007FFBA0D6D4FC: (caller: 00007FFBA0D3E221) ReturnHr(3) tid(64d8) 80000FF

我在网上没有发现任何类似的错误信息。 我尝试单独运行该函数并初始化为不同的 IdxgiFactory(例如 IdxgiFactory2),但两者仍然导致相同的问题。

ComPtr<IdxgiFactory> dxgiFactory;
UINT factoryFlags = dxgi_CREATE_FACTORY_DEBUG;
ThrowIfFailed(CreatedxgiFactory2(factoryFlags,IID_PPV_ARGS(&dxgiFactory)));

解决方法

这不是您描述的错误。

没有真正的失败,没有灾难,甚至没有异常,也没有从 API 调用返回给您的错误代码。您所看到的是内部 API 实现中的一个小故障,它使用这些奇怪的行发出调试输出。显然,这是微软 API 实现中的一个小问题,并且消息的奇怪格式表明它来自在一个模块中使用 wil:他们可能打算从软件的发布版本中删除此输出,但不知何故它起作用了以不同的方式输出,意外的调试输出通过...

该消息很可能对应于可恢复的内部错误条件,然后会对其进行处理,并且您的 API 调用最终会成功。没什么可担心的,微软只是让事情变得更干净。

,

即使使用 Visual Studio 2019 (v16.9.1) 中直接来自模板(或来自 Microsoft Github 存储库的示例应用)的任何空白应用,也会发生这些错误。只是烦人,应用程序永远不会崩溃或挂起。然而,这以前从未发生过。

我希望微软尽快解决这个问题(这对神经和心理健康有害)。你对此无能为力。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...