Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Прежде чем отправлять запрос ввода-вывода асинхронно в целевой объект ввода-вывода, необходимо отформатировать запрос. В следующей таблице перечислены методы целевого объекта ввода-вывода, которые драйвер может вызывать для форматирования запросов ввода-вывода.
Метод | Цель |
---|---|
Форматирует запрос на чтение |
|
Форматирует запрос на запись |
|
Форматирует запрос элемента управления устройством |
|
Форматирует внутренний запрос на управление устройствами |
|
Форматирование запроса цели WDF для внутреннего IOCTL других |
Форматирует нестандартный внутренний запрос на управление устройствами |
Чтобы отправить запрос ввода-вывода асинхронно, драйвер должен:
Форматирование запроса.
Используйте один из методов, перечисленных в предыдущей таблице, для форматирования запросов. Подробные сведения об использовании этих методов см. на справочных страницах методов.
Зарегистрируйте функцию обратного вызова CompletionRoutine.
Если вы отправляете запросы асинхронно, платформа обычно хочет уведомить драйвера о завершении каждого запроса другим драйвером. Драйвер должен определить функцию обратного вызова CompletionRoutine и зарегистрировать ее, вызвав WdfRequestSetCompletionRoutine. Дополнительные сведения см. в разделе Завершение запросов ввода-вывода.
Отправьте запрос.
После того как драйвер форматирует запрос и регистрирует функцию обратного вызова CompletionRoutine , драйвер должен вызвать WdfRequestSend. Этот метод позволяет отправлять запросы синхронно или асинхронно в зависимости от флагов, заданных в параметре RequestOptions . Более простой способ синхронной отправки запросов ввода-вывода см. в разделе "Отправка запросов ввода-вывода" синхронно. Сведения о том, как получить состояние завершения для асинхронного запроса или любого запроса, отправляемого путем вызова WdfRequestSend, см. в разделе "Завершение запросов ввода-вывода".
Драйвер, вызывающий WdfRequestSend для отправки запроса ввода-вывода, может попытаться отменить запрос позже. Дополнительные сведения см. в разделе Отмена запросов ввода-вывода.
Некоторые драйверы могут отправлять один запрос ввода-вывода нескольким устройствам и, таким образом, нескольким целевым объектам ввода-вывода, вызывая WdfRequestSend несколько раз для каждого запроса. Эти драйверы должны вызывать WdfRequestChangeTarget перед каждым вызовом WdfRequestSend после первого, чтобы убедиться, что запрос можно отправить в следующий целевой объект ввода-вывода.