Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если драйвер указал последовательный или параллельный метод диспетчеризации для очереди ввода-вывода, платформа вызывает функцию обратного вызова, предоставляемую драйвером, каждый раз, когда она готова к доставке одного из запросов очереди драйверу.
Для каждой очереди ввода-вывода драйвер может предоставить одну или несколько следующих функций обратного вызова, которые называются обработчиками запросов:
EvtIoRead
Фреймворк вызывает функцию обратного вызова EvtIoRead очереди ввода-вывода, когда запрос на чтение доступен в очереди.
EvtIoWrite
Фреймворк вызывает функцию обратного вызова очереди ввода-вывода EvtIoWrite, когда запрос на запись доступен в очереди.
EvtIoDeviceControl
Платформа вызывает функцию обратного вызова EvtIoDeviceControl очереди ввода-вывода, когда запрос на управление вводом-выводом устройства доступен в очереди.
EvtIoInternalDeviceControl
Платформа вызывает функцию очереди ввода-вывода EvtIoInternalDeviceControl для обработки внутреннего запроса управления ввода-вывода устройства, когда он доступен в очереди.
EvtIoDefault
Платформа вызывает функцию обратного вызова EvtIoDefault для очереди ввода-вывода, когда доступен любой запрос, если драйвер не предоставил связанную функцию обратного вызова, специфичную для типа запроса.
Драйвер регистрирует функции обратного вызова при вызове WdfIoQueueCreate для создания очереди ввода-вывода для устройства.
Каждая из этих функций обратного вызова получает два входных аргумента: дескриптор запроса ввода-вывода, который платформа предоставляет драйверу и дескриптор очереди ввода-вывода, которая содержала запрос. Функция обратного вызова может определить целевое устройство, вызвав WdfIoQueueGetDevice.
Платформа вызывает обработчики запросов драйвера в произвольном контексте потока. Драйвер не должен ждать длительного периода времени при выполнении в произвольном контексте потока. В некоторых случаях драйвер может использовать объекты диспетчера ядра в качестве механизмов синхронизации. Сведения о том, когда драйвер может ожидать объектов диспетчера и что делать, когда он не может, см. в разделе "Введение в объекты диспетчера ядра".