Всем привет,открываю диспечер устройств, выбираю свою видеокарту,открываю вкладку 'Ресурсы' ,там перечислены ресурсы:диапазон ввода вывода,диапазон памяти,можно ли этой информации доверять или использовать для создания драйвера ?
Можно доверять: PnP говорит системе, где у устройства что лежит, а Configuration Manager сохраняет эту инфу в реестре в структурках CM_RESOURCE_LIST, откуда её уже вычитывает диспетчер устройств. Почитать можно здесь: https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources Но вряд ли получится работать в своём драйвере с этими диапазонами IO и видеопамятью: ты же не знаешь, какой порт для чего нужен и где что и в каком формате лежит в видеопамяти. Кроме того, для настоящего видеодрайвера станет неожиданностью, что в его память кто-то что-то пишет. И, наверно, главная проблема: современные видеокарты не отображают в память фреймбуфер, на котором можно было бы что-то нарисовать, записывая в него пиксели напрямую. Современные драйвера не сами рисуют пиксели, а отправляют карте команды на рисование (типа «нарисуй треугольник с такими-то цветами вершин»), а изображение строится самой картой где-то внутри в её внутреннем фреймбуфере. Этих буферов несколько, они постоянно переключаются, и их может вообще не быть видно в RAM. Поэтому, если хочешь что-то рисовать из ядра, то тут вариантов мало: или использовать GDI из win32k.sys, или вклиниться в рендеринг в dxgkrnl. Или, если хочется работать напрямую с фреймбуфером - удалить драйвер видеокарты, чтобы переключиться на софтверный рендеринг, тогда в диспетчере устройств ты получишь адрес настоящего фреймбуфера с настоящими пикселями: что туда запишешь - то и будет видно.