我如何知道注册表中有关 DirectX 的 GPU 值?
How can I know the GPU values about DirectX in regedit?
Regedit Directx informations
我找到了这个寄存器,我需要知道如何转换这些项目并获取实际值:
- 驱动程序版本
- 上次上线
- MaxD3D11FeatureLevel
- MaxD3D12FeatureLevel
- 共享系统内存
- UDMVersion
我是用这个取值的,但是不知道转换后的真实值。
public void CheckDirectx()
{
RegistryKey registerKey;
string description = string.Empty;
long driverVersion = -1;
long lastSeen = -1;
int d11FeatureLevel = -1;
int d12FeatureLevel = -1;
long umdVersion = -1;
try
{
registerKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\DirectX\{AA4CC8A5-889A-11E9-B1F8-1062E5C8AC0E}");
description = registerKey.GetValue("Description") as string;
driverVersion = (long)registerKey.GetValue("DriverVersion");
lastSeen = (long)registerKey.GetValue("LastSeen");
d11FeatureLevel = (int)registerKey.GetValue("MaxD3D11FeatureLevel");
d12FeatureLevel = (int)registerKey.GetValue("MaxD3D12FeatureLevel");
umdVersion = (long)registerKey.GetValue("UMDVersion");
}catch (IOException e)
{
Console.WriteLine("{0}: {1}",e.GetType().Name, e.Message);
return;
}
finally
{
Console.WriteLine("{0}", description);
Console.WriteLine("{0}", lastSeen);
Console.WriteLine("{0}", d11FeatureLevel);
Console.WriteLine("{0}", d12FeatureLevel);
Console.WriteLine("{0}", umdVersion);
}
}
这些值中的大部分都可以使用 DXGI 接口(DXGI_ADAPTER_DESC1 结构和其他)读取,并且是 LARGE_INTEGER.
根据样本中的值,您可以像这样转换它们(我昨天为您的 LastSeen 日期):
LARGE_INTEGER nDriverVersion;
nDriverVersion.QuadPart = 0x190015000e0768LL;
WORD nProduct = HIWORD(nDriverVersion.HighPart);
WORD nVersion = LOWORD(nDriverVersion.HighPart);
WORD nSubVersion = HIWORD(nDriverVersion.LowPart);
WORD nBuild = LOWORD(nDriverVersion.LowPart);
LARGE_INTEGER nLastSeen;
nLastSeen.QuadPart = 0x1D51F80F1EA7FB1LL;
FILETIME ft;
ft.dwLowDateTime = nLastSeen.LowPart;
ft.dwHighDateTime = nLastSeen.HighPart;
SYSTEMTIME st;
FileTimeToSystemTime(&ft, &st);
Regedit Directx informations
我找到了这个寄存器,我需要知道如何转换这些项目并获取实际值:
- 驱动程序版本
- 上次上线
- MaxD3D11FeatureLevel
- MaxD3D12FeatureLevel
- 共享系统内存
- UDMVersion
我是用这个取值的,但是不知道转换后的真实值。
public void CheckDirectx()
{
RegistryKey registerKey;
string description = string.Empty;
long driverVersion = -1;
long lastSeen = -1;
int d11FeatureLevel = -1;
int d12FeatureLevel = -1;
long umdVersion = -1;
try
{
registerKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\DirectX\{AA4CC8A5-889A-11E9-B1F8-1062E5C8AC0E}");
description = registerKey.GetValue("Description") as string;
driverVersion = (long)registerKey.GetValue("DriverVersion");
lastSeen = (long)registerKey.GetValue("LastSeen");
d11FeatureLevel = (int)registerKey.GetValue("MaxD3D11FeatureLevel");
d12FeatureLevel = (int)registerKey.GetValue("MaxD3D12FeatureLevel");
umdVersion = (long)registerKey.GetValue("UMDVersion");
}catch (IOException e)
{
Console.WriteLine("{0}: {1}",e.GetType().Name, e.Message);
return;
}
finally
{
Console.WriteLine("{0}", description);
Console.WriteLine("{0}", lastSeen);
Console.WriteLine("{0}", d11FeatureLevel);
Console.WriteLine("{0}", d12FeatureLevel);
Console.WriteLine("{0}", umdVersion);
}
}
这些值中的大部分都可以使用 DXGI 接口(DXGI_ADAPTER_DESC1 结构和其他)读取,并且是 LARGE_INTEGER.
根据样本中的值,您可以像这样转换它们(我昨天为您的 LastSeen 日期):
LARGE_INTEGER nDriverVersion;
nDriverVersion.QuadPart = 0x190015000e0768LL;
WORD nProduct = HIWORD(nDriverVersion.HighPart);
WORD nVersion = LOWORD(nDriverVersion.HighPart);
WORD nSubVersion = HIWORD(nDriverVersion.LowPart);
WORD nBuild = LOWORD(nDriverVersion.LowPart);
LARGE_INTEGER nLastSeen;
nLastSeen.QuadPart = 0x1D51F80F1EA7FB1LL;
FILETIME ft;
ft.dwLowDateTime = nLastSeen.LowPart;
ft.dwHighDateTime = nLastSeen.HighPart;
SYSTEMTIME st;
FileTimeToSystemTime(&ft, &st);