Собственно задача - юзермодовому приложению получать реальные нажатия клавиш. Здесь мне подсказали, что нужен драйвер фильтра. Я что-то подобное реализовал, то есть он нормально аттачится к драйверу клавиатуры, DbgPrint'ом выводит скан коды нажатых клавиш. Но для меня остается непонятным, как передавать нажатия клавиш в юзермод, если Device Object, создаваемый моим драйвером, цепляется к драйверу клавиатуры, то есть обрабатывать IOCTLы, IRP_MJ_READ, итд - нельзя, потому что я не создаю реального устройства, а просто добавляю дополнительную обработку IRP драйвера клавиатуры. Я подозреваю, что в legacy драйвере реализовать передачу в юзермод не так очевидно. Как в таком случае обычно поступают?
p.s. я попробовал писать в именованный пайп через Dpc. Но это очень медленно оказалось. Нужно что-то, что может напрямую передавать данные. Желательно вообще не прикручивать dpc, ибо медленный.
Да. IoCreateDevice создает еще один объект девайса. Но IRP_MJ_Xxx привязаны к DriverObject. Не знаю,как с жтим быть