Как узнать значения GPU о DirectX в regedit? - PullRequest
0 голосов
/ 11 июня 2019

Информация о Regedit Directx

Я нашел этот регистр, и мне нужно знать, как я могу преобразовывать и принимать реальные значения для этих элементов:

  • DriverVersion
  • LastSeen
  • MaxD3D11FeatureLevel
  • MaxD3D12FeatureLevel
  • SharedSystemMemory
  • 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);
        }
    }

1 Ответ

0 голосов
/ 11 июня 2019

Большинство этих значений могут быть прочитаны с помощью интерфейсов 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);
...