Работа с клавиатурой в legacy драйвере

Тема в разделе "WASM.NT.KERNEL", создана пользователем float, 28 авг 2010.

  1. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    Собственно задача - юзермодовому приложению получать реальные нажатия клавиш. Здесь мне подсказали, что нужен драйвер фильтра. Я что-то подобное реализовал, то есть он нормально аттачится к драйверу клавиатуры, DbgPrint'ом выводит скан коды нажатых клавиш. Но для меня остается непонятным, как передавать нажатия клавиш в юзермод, если Device Object, создаваемый моим драйвером, цепляется к драйверу клавиатуры, то есть обрабатывать IOCTLы, IRP_MJ_READ, итд - нельзя, потому что я не создаю реального устройства, а просто добавляю дополнительную обработку IRP драйвера клавиатуры. Я подозреваю, что в legacy драйвере реализовать передачу в юзермод не так очевидно. Как в таком случае обычно поступают?
     
  2. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    p.s. я попробовал писать в именованный пайп через Dpc. Но это очень медленно оказалось. Нужно что-то, что может напрямую передавать данные. Желательно вообще не прикручивать dpc, ибо медленный.
     
  3. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Никто же не мешает создать еще один DEVICE_OBJECT ? =)
     
  4. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    Да. IoCreateDevice создает еще один объект девайса. Но IRP_MJ_Xxx привязаны к DriverObject. Не знаю,как с жтим быть