Здравствуйте!!! Памагите мне найти драйвер дисплея (или имя его длл, но только не минипорта). Например, минипорт я вот так легко нахожу: Код (Text): ntStatus = IoGetDeviceInterfaces(&GUID_DEVINTERFACE_DISPLAY_ADAPTER, NULL, DEVICE_INTERFACE_INCLUDE_NONACTIVE, &SymbolicLinkList); if ((!NT_SUCCESS(ntStatus)) || !SymbolicLinkList) { return FALSE; } RtlInitUnicodeString(&uDevName, (WCHAR*)SymbolicLinkList); ntStatus = IoGetDeviceObjectPointer(&uDevName, FILE_READ_DATA, &FileObject, &DeviceObject); ExFreePool(SymbolicLinkList); if (!NT_SUCCESS(ntStatus) ) { return FALSE; } Далее: 1) DeviceObject => DriverObject => DriverSection => LdrDataTableEntry 2) LdrDataTableEntry->FullDllName или BaseDllName А как найти драйвер дисплея? Даже девайс "\Device\Video0" тоже дает драйвер минипорта, блин... Заранее благодарю за помощь!!!
Пока нахожу имя драйвера через реестр:HKLM\SYSTEM\CurrentControlSet\Control\Video\{1BE52071-E016-4255-9155-059E560759B5}\0000 => InstalledDisplayDrivers = имя драйвера дисплея без “.dll” Что интересно: отображен это драйвер только в UserMode на адрес выше 2Гб, а из win32k.sys импортирует себе EngXXX (например, EngTextOut), - забавно! Хм... хотя Руссинович вроде писал, что в WinXP всё GDI увели в UserMode, чтобы к примеру от утечки ресурсов GDI страдал только сам виновник – пользовательский процесс. Реестр это хорошо, но может кто знает как еще subj!!!
Меня всёже “терзали смутные сомнения...” и я решил решить проблему по-другому, взглянув на нее с конца. Когда устанавливается драйвер для какого-то уст-ва в 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 Вот и всё! Тема закрыта. Поздравляю весь форум с днём ПРОГРАММИСТА!!!