Общие сведения о целевых объектах ввода-вывода
В разделах этого раздела описывается, как драйвер Windows Driver Frameworks (WDF) может переадресовать запрос ввода-вывода или создать и отправить новый запрос другому драйверу, который называется целевым объектом ввода-вывода.
Когда драйвер функции, драйвер фильтра или драйвер мини-порта получает запрос ввода-вывода, драйвер может обработать запрос самостоятельно или ему может потребоваться помощь других драйверов. Если драйвер нуждается в помощи, он может перенаправить запрос другому драйверу или создать один или несколько новых запросов и отправить их другому драйверу.
В Kernel-Mode Driver Framework целевой объект ввода-вывода представляет объект устройства, который является целевым объектом запроса ввода-вывода. Драйвер функции, фильтра или минипорта может использовать целевой объект ввода-вывода для отправки запросов ввода-вывода другому драйверу. Эти драйверы часто отправляют свои запросы ввода-вывода следующему более низкому драйверу в стеке драйверов. Таким образом, каждая функция, фильтр и драйвер мини-порта на основе платформы имеет локальный целевой объект ввода-вывода для каждого устройства, который является следующим ниже драйвером устройства.
Иногда драйвер должен отправлять запрос ввода-вывода в другой целевой объект — в верхнюю часть другого стека драйверов или, редко, в другой драйвер в стеке отправляющего драйвера. Поэтому платформа также предоставляет удаленные целевые объекты ввода-вывода, которые состоят из всех целевых объектов ввода-вывода, за исключением локального целевого объекта ввода-вывода.
Каждый целевой объект ввода-вывода представлен целевым объектом ввода-вывода. Каждый целевой объект ввода-вывода в основном является очередью, которая управляет доставкой запроса целевому объекту устройства. Когда драйвер отправляет запрос целевому объекту ввода-вывода, платформа сохраняет запрос в очереди, пока не сможет доставить запрос целевому объекту устройства.
Платформа поддерживает как общие целевые объекты ввода-вывода, так и специализированные целевые объекты ввода-вывода:
Общие целевые объекты ввода-вывода могут использоваться всеми драйверами функций, фильтров и минипортов, но они не поддерживают специальные форматы данных для конкретных устройств.
Специализированные целевые объекты ввода-вывода позволяют драйверам функций, фильтров и минипортов легко отправлять запросы ввода-вывода, требующие специального форматирования данных для конкретного целевого объекта. В настоящее время платформа обеспечивает поддержку следующих специализированных целевых объектов ввода-вывода:
Если платформа предоставляет специализированные целевые объекты ввода-вывода, поддерживающие формат данных устройства, драйвер должен использовать специализированные целевые объекты ввода-вывода. В противном случае драйвер должен использовать общие целевые объекты ввода-вывода.