Работа с клавиатурой через порты в r0

Тема в разделе "WASM.NT.KERNEL", создана пользователем zhindos, 29 июл 2009.

Статус темы:
Закрыта.
  1. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    Доброе время суток, господа.

    Имеется трабл следующего содержания. Все по порядку.
    "Вхожу" в r0 ч-з модификацию \Device\PhysicalMemory(прописывания своего CallGat-а в GDT). В "R0Func" есть следующий код:

    Код (Text):
    1. in          al, 0x64
    2. and         al, 0xFD
    3. out         0x64, al//bit 1 is set to 0 that means that input buffer doesn't contain any data
    4. mov         al, 0xF5
    5. out         0x60, al//send the command "turn off a keyboard"
    6. in          al, 0x64
    7. or          al, 0x02
    8. out         0x64, al//bit 1 restoring
    и

    Код (Text):
    1. in          al, 0x64
    2. and         al, 0xFD
    3. out         0x64, al//bit 1 is set to 0 that means that input buffer doesn't contain any data
    4. mov         al, 0xF4
    5. out         0x60, al//send the command "turn on a keyboard"
    6. in          al, 0x64
    7. or          al, 0x02
    8. out         0x64, al//bit 1 restoring
    Так вот, первый фрагмент кода ведет себя как и ожидается - disabl-ит клаву, однако второй не restor-ит. Два вопроса, как обычно: почему и как сделать, чтобы работало? =))

    ЗЫ. Проверял второй фрагмент "сразу"(без запуска первого перед этим) - как ни странно, клава вырубается! Т.е action прямо противоположен expectation-у...
    ЗЗЫ. Не пинайте сильно, если была продемонстрирована ламерность в достаточно больших количествах =))
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    а тебя не смущает, что при чтении порт 64 возвращает флаги, а при записи воспринимается как команда т.е. изменять флаги через него НЕЛЬЗЯ!
     
  3. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    код шикарный
    наугад походу
    драйвер i8042ptr.sys в исходниках DDK
     
  4. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    ну и даташит не помешает хоть какой-нибудь чтоб разобраться как она работает
     
  5. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    Thanks!!!
    Блин, ну и ступил! Вроде только полночь! =))))

    ЗЫ. Админы, прибейте тему! Please!!! =)
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    http://code.google.com/p/ngdbg/source/browse/trunk/8042/8042.cpp
     
Статус темы:
Закрыта.