Мне надо написать драйвер-фильтр для класса клавиатуры. Через call-back функцию запроса MJ_READ я узнаю сканкоды нажатых клавиш. Моя задача — при определенной комбинации нажатых клавиш сэмитировать нажатие заданной последовательности клавиш.
Подскажите, пожалуйста, как мне можно сэмитировать нажатие последовательности клавиш?
Может ли один IRP-пакет нести информацию о нажатии больше чем одной клавиши, то есть можно ли просто увеличить размер IRP->AssociatedIrp.SystemBuffer и записать в массив
IRP->AssociatedIrp.SystemBuffer[i].MakeCode IRP->AssociatedIrp.SystemBuffer[i].Flags
столько "нажатых" и "отжатых" клавиш, сколько мне нужно? При этом записав IRP->IoStatus.Information = n * sizeof(KEYBOARD_INPUT_DATA);
Воспримет ли система это как нажатие нескольких клавиш последовательно? Я пробовала так делать, но у меня не получалось — система зависала или просто ничего не выводила на "горячую" комбинацию. Если так можно сделать, то где могут быть ошибки?