Войти
ПрограммированиеФорумОбщее

Как получить версию драйвера видеокарты?

Страницы: 1 2 Следующая »
#0
1:46, 6 янв. 2010

Имя видеокарты я получил, но как получить версию видео драйвера? Это вообще реально?
Изображение
в диспетчере устройств даже дата изготовления драйвера есть, но как их оттуда выцепить? значит они где то в реестре записаны... Help!


#1
2:27, 6 янв. 2010

Вообще через Direct caps это легче сделать, но если хочешь через реестр то пожайлуста.
Как я понял там примерно так всё обстоит:
Здесь
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
ищёшь папку в которой параметр "Class"равен "Display" ("Class"="Display"). Всё значит нашёл видяху, дальше заходишь в папку 0000 а там уже и лежит параметр DriverVersion и кучка други показателей

#2
2:45, 6 янв. 2010

Спасибо!

#3
19:37, 7 янв. 2010

Тоже интересует сабж... В этой ветке реестра чот ничего такого не нашёл...

#4
19:45, 7 янв. 2010

Executor
> Тоже интересует сабж... В этой ветке реестра чот ничего такого не нашёл...
Плохо искал? Экспортируй ветку "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\" в reg файл и ищи в нём "Class"="Display".

#5
19:54, 7 янв. 2010

http://msdn.microsoft.com/en-us/library/ee416363%28VS.85%29.aspx

#6
20:01, 7 янв. 2010

X512
Дисплей та я нашёл, просто там нигде чот нет версии...

ashujon
А без Д3Д?

#7
20:16, 7 янв. 2010

http://www.gamedev.ru/code/forum/?id=58900

#8
22:04, 7 янв. 2010

А православнее чтоб? :)
Имя файла вот у меня другое совсем для огл... Есть же способ както с ICD работать не касаясь конкретных файлов, а чтобы система сообщала чо каво?

#9
23:11, 7 янв. 2010

Кого не устраивает функционал D3D или OpenGL - обращайтесь напрямую к видеодрайверу и узнаете. У каждого вендора свои функции

#10
0:01, 8 янв. 2010

Executor
Не так давно была схожая тема.
Если коротко, то через Setup API находится адаптер и у него можно узнать всё необходимое.
Правда возникает проблема соответствия с D3D/OpenGL устройством, если в системе больше одного адаптера.

#11
0:04, 8 янв. 2010

dev
Да я как бы не против функционала ОпенГЛ, но где он? :) То что по ссылке в посте 7 - это к OpenGL ICD никакого отношения не имеет, там тупо получается инфо о версии DLL... Должно быть какоето GetEnumICD() или типа того... Потом у каждого ICD версия и т.п. вещи...

Yamazaru
Вариант, но опять же думаю должен быть провославный способ работы с ICD...


Про ICD нашёл лишь то, что лицензия от МС нужна, чтобы скачать СДК... Что неужели иначе никак нельзя работать с ICD? glview же както с ICD работает...
Как вариант лезть сюда HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{...}\0000\OpenGLDriverName и потом узнавать версию DLL, но гарантий никаких, что эта версия у DLL имеется вообще, ведь так?
Либо можно, как тут и ранее написали, но я не сразу заметил, DriverVersion прочитать...

#12
0:35, 8 янв. 2010

Executor
Приведённый вариант самый православный )
Как я помню у OpenGL ICD нет public API. Даже если там что-то найдётся, то гарантий что оно будет работать нет.
У XPDM/WDDM есть user mode функции, через которые работают оба графических API, но оно тоже ненадёжно.

#13
0:47, 8 янв. 2010

В общем я понял как по нормальному можно сделать... Типа так:

    DISPLAY_DEVICE dd;
    dd.cb = sizeof(DISPLAY_DEVICE);
    int i = 0;
    while (EnumDisplayDevices(NULL, i, &dd, 0))
    {
        if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
        {
            // dd.DeviceKey будет аля "\Registry\Machine\System\CurrentControlSet\Control\Video\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\0000"
            // лезем в реестре по этому пути и читаем DriverVersion
            // по вкусу читаем dd.DeviceID для определения вендора
            // из полученной информации делаем выводы и выдаём злобное окошко, мол у тебя вендор такойто и дрова твои гумно
            break;
        }
        i++;
    }

З.Ы. Какой я молодец! :)

#14
0:54, 8 янв. 2010

Executor
Это было бы слишком просто )

DeviceKey - Reserved.
Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.