IRP именно сидит и ждет нажатия/отжатия кнопки. Система дает запрос на ввод. Формируется IRP, пробегает по всей цепочке драйверов. Каждый драйвет выставляет в IRP свой адрес Completion Routine. А моего драйвера в этот момент в цепочке еще нет. И событие IRP_MJ_FLUSH_BUFFERS просто пройдет мимо...
![Жаль](/Smileys/test/frown.gif)
Непонятным является то, что при проходе всей цепочки драйверов до самого низа все DEVICE_OBJECT.CurrentIrp равны нулю. Из чего я и сделал вывод, что IRP околачивается где-то внутри IO Manager.
Это мой первый драйвер, поэтому не судите строго, если я, мягко говоря, чушь несу.
![Улыбаюсь](/Smileys/test/smile.gif)