Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Я и не говорил, что сложно 13.02.04 19:45 Число просмотров: 2325
Автор: amirul <Serge> Статус: The Elderman
|
В DDK есть пример фильтра (только он фильтр i8042 порта, так что на USB-шную клаву реагировать не будет совершенно). Только в этом фильтре (ничего кроме собственно встраивания в стек клавиатуры не делающем) 30 кило исходников - в коротенькую статью вряд ли влезет, если еще и объяснять пытаться :-)
Сложности возникают при реалзации MapVirtualKeyEx + ToUnicode в режиме ядра. Причем делать это надо в той локали (KBDTABLE), которая установлена для потока, владеющего окном, которое находится в фокусе, а сканкоды всегда возвращаются в контескте системного потока (KeyboardThreadMain). Повторюсь, все это сделать надо в режиме ядра. Тоже не так уж и сложно, но полагаться надо только на недокументированные вещи.
Хотя есть еще один способ: вывести сканкод в третье кольцо, обработать там, а потом вернуть обратно в драйвер. Но в таком случае возникает проблема маскировки левого процесса. Тоже несложно сделать, но в принципе надо обладать не меньшими знаниями потрохов винды, чем если все делать прямо в ядре.
> Кстати это проделать не так уж и сложно! Только мороки > много в плане реадизации... получить сисю права а атам > гляди и DDK пойдет в ход :) Согласен. У меня даже наброски есть :-)
|
|
|