Прочитать memory-mapped регистры

Тема в разделе "WASM.WIN32", создана пользователем syrnik, 24 ноя 2005.

  1. syrnik

    syrnik New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2005
    Сообщения:
    4
    Возник вопрос - как можно получить доступ к регистрам устройства без написания своего драйвера? Они отображаются на адреса памяти, например E7800000h - E7800FFFh. Как можно прочитать/записать эту область памяти? Или проще написать драйвер?
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    syrnik

    Можно и без драйвера. Работай через CallGate(\device\physicalmemory). Примеров работы через него очень много.
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    недоступно в sp2+ насколько я помню
     
  4. syrnik

    syrnik New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2005
    Сообщения:
    4


    Ну в эту сторону я и начал копать, но просто попытка

    mov eax, [E7800000h] вываливается с BSOD PAGE_FAULT_IN_NONPAGED_AREA вот в принципе потому вопрос и возник, что я неправильно делаю?
     
  5. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290


    Страница может быть сброшена на диск. Может IRQ быть высокий.
     
  6. syrnik

    syrnik New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2005
    Сообщения:
    4
    Извините за тормознутость, но это мои первые шаги в этом направлении. В соответствии с указанными нюансами как может выглядеть fail-safe код для чтения/записи этой памяти? Куда рыть, где можно посмотреть подобные примеры? (в примерах CallGate подобного вроде нет)
     
  7. syrnik

    syrnik New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2005
    Сообщения:
    4
    Возможно ли как-то отобразить эту память в локальные адреса процесса?
     
  8. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ




    memory_mapped paged? интересно...

    да он просто не объявлен, этот регион

    хотя вот на варе видеобуфер точно подсасывается с диска, но это как бы все-таки не совсем железо



    to syrnik: вообще-то в ДДК все это хорошо расписано - и как объявлять регионы памяти, и как с ними работать. драйвер писАть придется-таки, иначе никак
     
  9. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ




    нет

    точнее все что выше MmUserProbeAddress оно и так мапится во все процессы одинаково (ну почти) а вот доступа туда из юзер-моде нет - только через драйвер-посредник
     
  10. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    http://wasm.ru/comment.php?artcode=CreateProcessKrnl



    там Ms Rem код привёл. Думаю поможет с этим вопросом. Хотя, если существует ядерный мап, то путём ручных манипуляций с PTE можно разрешить доступ к памяти из юзермода. Это непроблематично. В крайнем случае. Конечно без драйвера тут не обойтись. Опять же упрощая.