Здравствуйте всем! После обработки прерывания необходимо передать данные приложению пользовательского режима. Для этого на данный момент используется относительно стандартный подход: DPC->SetEvent->WaitForSingleObject в потоке приложения->IOCTL забрали данные. При этом время задержки получения данных составляет около 1 мс, что вроде бы и не много, но хотелось бы быстрее. Существуют ли более быстрые методы доставки данных ISR->приложение? В принципе, речь не просто о доставке данных, а в общем случае получении управления потоком приложения по команде из ядра. Насколько я знаю, в Линуксе можно в ISR таймера установить высший приоритет какого-либо потока, выполнить shedule, тем самым поместив поток на 1-е место в очереди готовых на выполнение и по выходу из ISR данный поток начинает исполняться через несколько микросекунд. Как подобное совершить в винде?
Хорошая статья о KeUserModeCallback. Но для того чтобы использовать это мне нужно понизить IRQL до PASSIVE_LEVEL, а как это сделать после обработки прерывания?