Поделиться через


Отправка запросов ввода-вывода в общие целевые объекты ввода-вывода

Драйвер может отправлять запросы ввода-вывода в общие целевые объекты ввода-вывода синхронно или асинхронно.

Если драйвер отправляет запросы ввода-вывода синхронно, поток драйвера отправляет запросы по одному за раз. Поток ожидает завершения каждого запроса перед отправкой следующего запроса. Этот процесс проще, чем асинхронная отправка запросов ввода-вывода. Драйвер может отправлять запросы ввода-вывода синхронно, если он не отправляет много запросов и если производительность системы или устройства не снижается, пока драйвер ожидает каждого запроса ввода-вывода.

Если драйвер отправляет запросы ввода-вывода асинхронно, поток драйвера отправляет каждый запрос, как только запрос готов к отправке, не дожидаясь завершения ранее отправленных запросов. Если ваш драйвер должен обрабатывать много запросов ввода-вывода за короткие периоды времени, вы, вероятно, не сможете позволить драйверу ждать завершения каждого запроса перед отправкой следующего запроса. В противном случае вы можете потерять данные или снизить производительность устройств драйвера и, возможно, всей системы.

Целевой объект ввода-вывода платформы предоставляет два набора методов, которые может вызывать драйвер: один — для синхронной отправки запросов ввода-вывода , а другой — для асинхронной отправки запросов ввода-вывода.

Для каждого из этих методов необходимо указать объект запроса и некоторое буферное пространство. Эти методы можно использовать для пересылки запроса, полученного драйвером в одной из очередей ввода-вывода, или для создания и отправки нового запроса.