Драйвер. Запись в память.

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

  1. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Пытаюсь в Xp из драйвера записать в память с помощью mmMapIoSpace. На сайте Microsoft нашел только краткое описание этой функции. После загрузки синий экран не появляется, но и по указанному адресу ничего не меняется-(
    Код (Text):
    1.  VOID *Mem;
    2.     char *Byt;
    3.     PHYSICAL_ADDRESS Padd;
    4.        
    5.     DbgPrint("Start");
    6.    
    7.     Padd.LowPart = 0xC8000;
    8.     Mem = MmMapIoSpace( Padd, 1, MmNonCached );
    9.    
    10.     Byt = (char*)Mem;
    11.     if (*Byt) *Byt = 0x00;
    12.     else *Byt = 0xFF;
    13.    
    14.     MmUnmapIoSpace( Mem, 1 );
    В чем проблема не понимаю, подскажите пожалуйста. Заранее спасибо-)
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1.     invoke MmMapIoSpace, 0, 0C8000h, 1, MmNonCached
    Всё работает, пишется. Там у меня значение D[0x0C8000] = 0xF000E816
    Щас ты скажешь что устройство не реагирует :lol:
     
  3. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Вот, вот-) А когда я смотрю что записано по этому адресу там одни ff. Наверно я что-то не так делаю-( А что значит 0 после mmMapIoSpace там же по моему тока 3 параметра?
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    iilisav
    0 значит, что первый параметр 64 битный, потому и состоит на асме из двух dword
     
  5. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Y_Mur
    ты тоже считаешь что код написан верно и должен работать?
     
  6. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Пытался вывести через DbgPrint значение в Mem все читается. А вот при записи ничего не происходит, т.е. значение Mem остается таким же как и до попытки записи-( В чем ошибка? Или для записи нужно использовать еще какие нибудь функции?