Ресурсы устройства

Тема в разделе "WASM.NT.KERNEL", создана пользователем Entropy, 4 май 2025.

  1. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    200
    Всем привет,открываю диспечер устройств, выбираю свою видеокарту,открываю вкладку 'Ресурсы' ,там перечислены ресурсы:диапазон ввода вывода,диапазон памяти,можно ли этой информации доверять или использовать для создания драйвера ?
     

    Вложения:

    • dispatch.PNG
      dispatch.PNG
      Размер файла:
      68,1 КБ
      Просмотров:
      150
    • gpu_resource.PNG
      gpu_resource.PNG
      Размер файла:
      54,1 КБ
      Просмотров:
      156
  2. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.498
    Адрес:
    Россия, Нижний Новгород
    Можно доверять: PnP говорит системе, где у устройства что лежит, а Configuration Manager сохраняет эту инфу в реестре в структурках CM_RESOURCE_LIST, откуда её уже вычитывает диспетчер устройств.
    Почитать можно здесь: https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources

    Но вряд ли получится работать в своём драйвере с этими диапазонами IO и видеопамятью: ты же не знаешь, какой порт для чего нужен и где что и в каком формате лежит в видеопамяти.
    Кроме того, для настоящего видеодрайвера станет неожиданностью, что в его память кто-то что-то пишет.

    И, наверно, главная проблема: современные видеокарты не отображают в память фреймбуфер, на котором можно было бы что-то нарисовать, записывая в него пиксели напрямую.
    Современные драйвера не сами рисуют пиксели, а отправляют карте команды на рисование (типа «нарисуй треугольник с такими-то цветами вершин»), а изображение строится самой картой где-то внутри в её внутреннем фреймбуфере.
    Этих буферов несколько, они постоянно переключаются, и их может вообще не быть видно в RAM.

    Поэтому, если хочешь что-то рисовать из ядра, то тут вариантов мало: или использовать GDI из win32k.sys, или вклиниться в рендеринг в dxgkrnl.
    Или, если хочется работать напрямую с фреймбуфером - удалить драйвер видеокарты, чтобы переключиться на софтверный рендеринг, тогда в диспетчере устройств ты получишь адрес настоящего фреймбуфера с настоящими пикселями: что туда запишешь - то и будет видно.
     
    Mikl___ нравится это.