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


Указание характеристик устройства

Каждый объект устройства может иметь одну или несколько характеристик устройства. Характеристики устройства хранятся в виде флагов в элементе Characteristics структуры DEVICE_OBJECT объекта устройства.

Большинство драйверов указывают только FILE_DEVICE_SECURE_OPEN характеристику. Это гарантирует, что те же параметры безопасности применяются к любому открытому запросу в пространстве имен устройства. Дополнительные сведения см. в разделе Управление доступом к пространству имен устройств.

FILE_AUTOGENERATED_DEVICE_NAME используется только для PDOs. Характеристики FILE_FLOPPY_DISKETTE, FILE_REMOVABLE_MEDIA и FILE_WRITE_ONCE_MEDIA относятся к устройствам хранения. Описание возможных флагов характеристик устройства можно найти в разделе о члене характеристик в DEVICE_OBJECT.

Некоторые характеристики устройства, такие как FILE_AUTOGENERATED_DEVICE_NAME, применяются только к отдельным объектам устройства. Драйверы могут указать параметр характеристик устройства для отдельных объектов устройства при создании объекта, вызвав IoCreateDevice или IoCreateDeviceSecure.

Следующие характеристики применяются ко всему стеку устройств:

УСТРОЙСТВО_БЕЗОПАСНОСТИ_ОТКРЫТЬ

ФАЙЛ_ФЛОППИ_ДИСКЕТА

УСТРОЙСТВО_ТОЛЬКО_ДЛЯ_ЧТЕНИЯ

ФАЙЛ_СЪЕМНЫЕ_НОСИТЕЛИ

МЕДИАОСНОВА ДОСТУПА С ЗАПИСЬЮ ОДИН РАЗ

Драйверы могут задавать характеристики устройств, которые применяются ко всему стеку устройств, вызывая IoCreateDevice или IoCreateDeviceSecure. Кроме того, характеристики устройств, применяемые ко всему стеку устройств, можно задать в реестре либо для устройства, либо для класса установки устройства. (Дополнительные сведения см. в разделе Настройка свойств объекта устройства в реестре.)

Диспетчер PnP определяет параметр реестра для характеристик устройства следующим образом.

  • Если для отдельного устройства задано значение, диспетчер PnP использует это значение;

  • В противном случае, если для класса установки устройства задано значение, диспетчер PnP использует это значение;

  • В противном случае диспетчер PnP использует значение нуля в качестве параметра реестра.

Если в реестре задана характеристика устройства, которая применяется ко всему стеку устройств, или если оно установлено для любого FDO или фильтра DO в стеке, диспетчер PnP устанавливает его для каждого объекта устройства в стеке. (Если устройство необработанным режимом и таким образом не имеет FDO, то вместо этого диспетчер PnP использует PDO.)