Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Операционная система представляет устройства в виде объектов устройства. Один или несколько объектов устройства связаны с каждым устройством. Объекты устройств служат целью всех операций на устройстве.
Драйверы в режиме ядра должны создавать по крайней мере один объект устройства для каждого устройства со следующими исключениями:
Минидрайверы, которые имеют связанный класс драйвера или портовый драйвер, не обязаны создавать собственные объекты устройства. Драйвер класса или драйвер порта создаёт объекты устройства и отправляет операции в минидрайвер.
Драйверы, которые являются частью подсистем, относящихся к типу устройства, например NDIS минипорта, имеют свои объекты устройства, созданные подсистемой.
Ознакомьтесь с документацией по конкретному типу устройства, чтобы определить, создает ли драйвер собственные объекты устройств.
Некоторые объекты устройств не представляют физических устройств. Драйвер только для программного обеспечения, который обрабатывает запросы ввода-вывода, но не передает эти запросы оборудованию, по-прежнему должен создать объект устройства для представления цели своих операций.
Дополнительные сведения о том, как драйвер может создавать объекты устройств, см. в статье "Создание объекта устройства".
Устройства обычно представлены несколькими объектами устройств, по одному для каждого драйвера в стеке драйверов, обрабатывающим запросы ввода-вывода для устройства. Объекты для устройства организованы в стек устройств. Всякий раз, когда операция выполняется на устройстве, система передает структуру данных IRP драйверу для верхнего объекта устройства в стеке устройств. Каждый драйвер либо обрабатывает IRP, либо передает его драйверу, связанному с объектом нижестоящего устройства в стеке устройств. Дополнительные сведения о стеках устройств см. в примере стека устройств WDM. Дополнительные сведения об IRP см. в разделе "Обработка irPs".
Объекты устройств представлены DEVICE_OBJECT структурами, управляемыми диспетчером объектов. Диспетчер объектов предоставляет те же возможности для объектов устройств, что и для других системных объектов. В частности, объект устройства можно назвать, а именованный объект устройства может иметь маркеры, открытые на нем. Дополнительные сведения об именованных объектах устройства см. в разделе "Именованные объекты устройства".
Система предоставляет выделенное хранилище для каждого объекта устройства, называемого расширением устройства, которое драйвер может использовать для хранилища для конкретного устройства. Расширение устройства создается и освобождается системой вместе с объектом устройства. Дополнительные сведения см. в расширениях устройств.
На следующем рисунке показана связь между объектами устройства и диспетчером ввода-вывода.
На рисунке показаны члены структуры DEVICE_OBJECT, которые представляют интерес для разработчика драйверов. Дополнительные сведения об этих элементах см. в статье "Создание объекта устройства", инициализация объекта устройства и свойств объектов устройств.