[HEX], сам недавно начал заниматься драйверами. Но кое-что могу подсказать. Про прерывание по событию ты конечно загнул
Вызвать обработку в драйвере из приложения можно таким образом: сначала CreateFile() и создается объект-файл сопоставленный с драйвером, а потом DeviceIOControl() с кодом IOCTL, который соответствует твоим желаниям. Свой IOCTL можно создать с помощью макроса определенного в DDK. Склероз замучал,
не помню как называется, а искать лень.
Статей на русском почти нет, по-крайней мере я не нашел. Есть книжки на этом сайте Programming WDM drivers Walter Oney's и еще кое-чего, кстати с примерами.