Visual c++ 如何在DirectX12中获取适配器驱动程序版本?

Visual c++ 如何在DirectX12中获取适配器驱动程序版本?,visual-c++,driver,directx-12,Visual C++,Driver,Directx 12,在DirectX9中,我可以调用IDirect3D9::GetAdapterIdentifier方法来获取带有适配器驱动程序版本DriverVersion的D3DADAPTER\u IDENTIFIER9 在DirectX12中是否有类似的方法来获取驱动程序版本?使用DXGI的方法 这与Direct3D 10和11相同,它们也使用DXGI 请注意,DXGI\u ADAPTER\u DESC结构有多个版本,是DXGI 1.6中的最新版本。您可以从注册表获取每个DXGI适配器驱动程序版本 keyHK

在DirectX9中,我可以调用
IDirect3D9::GetAdapterIdentifier
方法来获取带有适配器驱动程序版本
DriverVersion
D3DADAPTER\u IDENTIFIER9

在DirectX12中是否有类似的方法来获取驱动程序版本?

使用DXGI的方法

这与Direct3D 10和11相同,它们也使用DXGI


请注意,
DXGI\u ADAPTER\u DESC
结构有多个版本,是DXGI 1.6中的最新版本。

您可以从注册表获取每个DXGI适配器驱动程序版本

keyHKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\DirectX

(使用DXGI_适配器_DESC中的匹配设备ID)

例如,我得到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX{53ED9FF6-8883-11E8-B1FF-C0C7A6E97177}

DeviceId=0x402

Description=英特尔(R)高清图形

DriverVersion=0x140001300F12E3

然后:

LARGE_INTEGER nDriverVersion;
nDriverVersion.QuadPart = 0x140013000f12e3; 
WORD nProduct = HIWORD(nDriverVersion.HighPart);
WORD nVersion = LOWORD(nDriverVersion.HighPart);
WORD nSubVersion = HIWORD(nDriverVersion.LowPart);
WORD nBuild = LOWORD(nDriverVersion.LowPart);

=>20.19.15 Build 4835,这是一个有效的版本()

但是最新的结构
DXGI\u ADAPTER\u DESC3
不包含驱动程序版本,例如
d3dapter\u IDENTIFIER9
中的
DriverVersion
@PaulMattson啊,我明白你的意思了。也许您可以使用
LUID
adapter字段将其与特定的驱动程序匹配。起初这看起来很有希望,但不幸的是,我看到一些系统保留了来自较旧驱动程序版本的条目。也许您可以使用“LastSeen”字段来确定当前使用的一个,但我不确定。似乎您必须比较活动/当前适配器的LUID。看见