如何在 regedit 中知道有关 DirectX 的 GPU 值?

Posted

技术标签:

【中文标题】如何在 regedit 中知道有关 DirectX 的 GPU 值?【英文标题】:How can I know the GPU values about DirectX in regedit? 【发布时间】:2019-10-26 03:21:45 【问题描述】:

Regedit Directx informations

我找到了这个寄存器,我需要知道如何对这些项目进行转换并获取实际值:

驱动程序版本 上次看到 MaxD3D11FeatureLevel MaxD3D12FeatureLevel 共享系统内存 UDM版本

我用这个来获取值,但我不知道转换后的真实值。

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);
        
    

【问题讨论】:

How to read value of a registry key c#的可能重复 不是所有这些东西都可以从 directx api 枚举吗? 【参考方案1】:

这些值中的大部分都可以通过 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 的 GPU 值?的主要内容,如果未能解决你的问题,请参考以下文章

动画精灵问题 (C++/DirectX9)

魔兽争霸3打开提示无法初始化directX

DirectX 11引擎在第三次代码改进后没有突然运行,我不知道为什么

Directx 11 前缓冲器

将 DirectX 精灵移出屏幕时如何防止其被擦除

在 DirectX9 中更改分辨率