Как ядро ​​последовательного драйвера запрашивает приложение пользовательского режима для чтения данных? - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь разработать драйвер последовательного порта ядра для Windows с асинхронной связью. Я знаю, что должен определить вызовы IRP для чтения / записи и т. Д. Записать данные из приложения пользовательского режима в драйвер просто - просто вызовите соответствующий IRP, и вы в основном закончите. Если речь идет о чтении данных с серийника - я застрял. Какова механика чтения данных из серийника? Я не могу себе представить, что приложение пользовательского режима постоянно запрашивает чтение IRP (пустая трата ресурсов, если у вас нет данных для передачи из драйвера в приложение). Я думал, что драйвер может поднять флаг или что-то подобное, которые имеют данные для передачи. Пожалуйста, помогите мне понять, как это работает или как это делается в ядре Windows.

С уважением, Luk

1 Ответ

0 голосов
/ 11 января 2019

Приложение пользовательского режима отправляет запрос на чтение, который ожидает, пока данные не будут готовы. Когда данные передаются, приложение отправляет следующий запрос на чтение. Ссылка на ответ

...