Поделиться через


Имена устройств NT

Именованный объект устройства имеет имя формы \Device\DeviceName. Это называется именем устройства NT объекта устройства.

Имена устройств для драйверов WDM

Драйверы WDM не называют свои объекты устройства напрямую. Вместо этого система накладывает единую схему именования, которая гарантирует, что имена устройств не конфликтуют между драйверами. Схема именования драйверов WDM выглядит следующим образом.

  • PDO для устройства имеет имя. Драйвер шины запрашивает именованные PDOS для устройств, которые он перечисляет. Драйвер шины указывает характеристику устройства FILE_AUTOGENERATED_DEVICE_NAME при создании объекта устройства. Дополнительные сведения см. в разделе "Указание характеристик устройства". Затем система автоматически создает имя устройства.

  • FDOs и DOS-фильтры не именуются. Драйверы функций и фильтров не запрашивают имя при создании объекта устройства.

Любой запрос ввода-вывода в именованный объект устройства автоматически переходит к верхнему объекту в стеке объекта устройства. Таким образом, требуется указать только PDO. Приложения пользовательского режима не ссылаются на объекты устройств WDM по имени; Вместо этого приложения получают доступ к объекту устройства через его интерфейс устройства. Дополнительные сведения см. в разделе "Классы интерфейса устройства".

Записи драйверов не должны называть более одного объекта в стеке устройств. Операционная система проверяет параметры безопасности на основе именованного объекта. Если два разных объекта именуются и имеют разные дескрипторы безопасности, запросы ввода-вывода, отправляемые в объект с более слабым дескриптором безопасности, могут достичь объекта устройства с более строгим дескриптором безопасности.

Имена устройств для драйверов, отличных от WDM

Драйвер, отличный от WDM, должен явно указать имя для любых именованных объектов устройства. Драйвер должен создать по крайней мере один именованный объект устройства в каталоге объектов \Device для получения запросов ввода-вывода. Драйвер указывает имя устройства в качестве параметра DeviceName для IoCreateDeviceSecure при создании объекта устройства.