Как найти драйвер дисплея ?

Тема в разделе "WASM.NT.KERNEL", создана пользователем int2eh, 9 сен 2008.

  1. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Здравствуйте!!!
    Памагите мне найти драйвер дисплея (или имя его длл, но только не минипорта).
    Например, минипорт я вот так легко нахожу:

    Код (Text):
    1.     ntStatus = IoGetDeviceInterfaces(&GUID_DEVINTERFACE_DISPLAY_ADAPTER, NULL, DEVICE_INTERFACE_INCLUDE_NONACTIVE, &SymbolicLinkList);
    2.  
    3.     if ((!NT_SUCCESS(ntStatus)) || !SymbolicLinkList)
    4.     {
    5.         return FALSE;
    6.     }
    7.  
    8.     RtlInitUnicodeString(&uDevName, (WCHAR*)SymbolicLinkList);
    9.  
    10.     ntStatus = IoGetDeviceObjectPointer(&uDevName, FILE_READ_DATA, &FileObject, &DeviceObject);
    11.  
    12.     ExFreePool(SymbolicLinkList);
    13.  
    14.     if (!NT_SUCCESS(ntStatus) )
    15.     {
    16.         return FALSE;
    17.     }
    Далее:
    1) DeviceObject => DriverObject => DriverSection => LdrDataTableEntry
    2) LdrDataTableEntry->FullDllName или BaseDllName

    А как найти драйвер дисплея? Даже девайс "\Device\Video0" тоже дает драйвер минипорта, блин... :dntknw:
    Заранее благодарю за помощь!!!
     
  2. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Пока нахожу имя драйвера через реестр:HKLM\SYSTEM\CurrentControlSet\Control\Video\{1BE52071-E016-4255-9155-059E560759B5}\0000 => InstalledDisplayDrivers = имя драйвера дисплея без “.dll”

    Что интересно: отображен это драйвер только в UserMode на адрес выше 2Гб, а из win32k.sys импортирует себе EngXXX (например, EngTextOut), - забавно! Хм... хотя Руссинович вроде писал, что в WinXP всё GDI увели в UserMode, чтобы к примеру от утечки ресурсов GDI страдал только сам виновник – пользовательский процесс. Реестр это хорошо, но может кто знает как еще subj!!!
     
  3. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Меня всёже “терзали смутные сомнения...” и я решил решить проблему по-другому, взглянув на нее с конца. Когда устанавливается драйвер для какого-то уст-ва в Windows, из установочного .inf файла из секции [Version] система считывает его ClassGuid, который для Дисплея предопределен и всегда равен {4D36E968-E325-11CE-BFC1-08002BE10318} и... :) потом только дело техники найти в главной базе данных системы (Реестре):
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\Settings
    InstalledDisplayDrivers = имя драйвера дисплея без расширения .dll

    Вот и всё! Тема закрыта. Поздравляю весь форум с днём ПРОГРАММИСТА!!!