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