You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从D3D12CreateDevice()获取ID3D12Device10句柄?接口不支持报错

解决D3D12CreateDevice获取ID3D12Device10失败的问题

核心原因

ID3D12Device10接口仅在Windows 11 22H2(内部版本22621)及更高版本中引入,你的系统是Windows 11 21H2(22000.856),低于该接口要求的最低系统版本,因此无论直接通过D3D12CreateDevice请求,还是后续调用QueryInterface,都无法获取到该接口实例。

而ID3D12Device6在Windows 10 2004(内部版本19041)就已支持,你的系统版本满足兼容性要求,所以可以正常创建。

解决方案

  • 升级系统版本:将Windows 11升级到22H2或更高版本,系统会自动包含支持ID3D12Device10的D3D12运行时组件。
  • 降级目标接口:若无法升级系统,建议继续使用ID3D12Device6或更低版本的接口,保证代码在当前系统环境下正常运行。

验证系统支持的最高D3D12Device版本

可以通过以下代码逻辑确认当前系统能支持的最高接口版本:

ID3D12Device* pBaseDevice = nullptr;
HRESULT hr = D3D12CreateDevice(nullptr, D3D_FEATURE_LEVEL_12_0, IID_PPV_ARGS(&pBaseDevice));
if (SUCCEEDED(hr)) {
    // 依次尝试查询更高版本接口
    ID3D12Device6* pDevice6 = nullptr;
    if (SUCCEEDED(pBaseDevice->QueryInterface(IID_PPV_ARGS(&pDevice6)))) {
        // 系统支持Device6
        pDevice6->Release();
    }

    ID3D12Device10* pDevice10 = nullptr;
    if (FAILED(pBaseDevice->QueryInterface(IID_PPV_ARGS(&pDevice10)))) {
        // 系统不支持Device10
    }

    pBaseDevice->Release();
}

内容的提问来源于stack exchange,提问作者Luke Zhou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:01:08