Дескрипторы ОС Майкрософт для USB-устройств

Корпорация Майкрософт предоставляет набор собственных классов устройств и дескрипторов USB, которые называются дескрипторами ОС (MOD).

Из-за быстрого появления устройств, содержащих несколько аппаратных функций, многие производители считают, что их устройства не подходят для любого из текущих классов устройств универсальной последовательной шины (USB). Это лишает таких производителей одной из самых привлекательных функций USB-технологии: стандартизация программного обеспечения драйвера (в соответствии с классом устройства). Windows предоставляет драйверы собственного класса для большинства устройств, принадлежащих стандартным классам USB-устройств, и эти драйверы позволяют конечным пользователям легко подключать такие устройства к компьютеру без необходимости устанавливать специальное программное обеспечение.

Для размещения производителей, устройства которых не вписываются в текущий набор классов USB-устройств, корпорация Майкрософт разработала набор собственных классов устройств и дескрипторов USB, которые называются дескрипторами ОС (MOD). Приложения и системное программное обеспечение могут определять устройства, принадлежащие к классам устройств, определенным корпорацией Майкрософт, запрашивая устройства, чтобы определить, поддерживают ли они MOD.

Дескрипторы ОС Майкрософт имеют важное значение, отличное от поддержки собственных классов устройств. В частности, они предоставляют механизм получения максимального преимущества от встроенного ПО устройства. С помощью дескрипторов ОС Майкрософт можно использовать встроенное ПО для доставки файлов справки, специальных значков, универсальных указателей ресурсов (URL-адреса), параметров реестра и других данных, необходимых для упрощения установки и повышения удовлетворенности клиентов. В некоторых случаях можно забыли носитель хранилища, например диски floppy и компакт-диски, что упрощает доставку и поддержку обновлений.

Поддержка операционных систем

Дескрипторы Microsoft OS 1.0 поддерживаются:

  • Windows 11
  • Windows 10
  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Vista, Windows Server 2008
  • Windows XP с пакетом обновления 1 (SP1), Windows Server 2003

Дескрипторы Microsoft OS 2.0 поддерживаются:

  • Windows 11
  • Windows 10
  • Windows 8.1

Почему Windows выдает запрос дескриптора строки для индексирования 0xEE?

Устройства, поддерживающие дескрипторы ОС Майкрософт, должны хранить специальный дескриптор строки USB в встроенном ПО в фиксированном строковом индексе 0xEE. Этот дескриптор строки называется дескриптором строки ОС Майкрософт.

  • Его присутствие указывает, что устройство содержит один или несколько дескрипторов компонентов ОС.
  • Он содержит данные, необходимые для извлечения связанных дескрипторов компонентов ОС.
  • Он содержит поле подписи, которое отличает дескриптор строки ОС от других строк, которые могут храниться в 0xEE.
  • Он содержит номер версии, позволяющий выполнять будущие редакции дескрипторов ОС Майкрософт.

Если в 0xEE нет дескриптора строки или дескриптор строки в этом индексе не является допустимым дескриптором строки ОС, Windows предполагает, что устройство не содержит дескриптор компонентов ОС.

При первом подключении нового устройства к компьютеру операционная система, поддерживающая дескрипторы ОС Майкрософт, запрашивает дескриптор строки, который находится в индексе 0xEE. Дескриптор строки ОС Майкрософт содержит внедренное поле подписи, которое операционная система использует для отличия от других строк, которые могут находиться в индексе 0xEE. Наличие дескриптора строки, содержащего соответствующее поле подписи в индексе 0xEE указывает операционной системе, что устройство поддерживает дескрипторы ОС Майкрософт. Дескриптор строки ОС Майкрософт также предоставляет операционную систему с сведениями о версии.

Операционная система запрашивает дескриптор строки по индексу 0xEE во время перечисления устройства перед загрузкой драйвера устройства, что может привести к сбоям некоторых устройств. Такие устройства не поддерживаются версиями операционной системы Windows, поддерживающими дескрипторы ОС Майкрософт.

Если устройство не содержит допустимый дескриптор строки в индексе 0xEE, он должен реагировать на застойный пакет (иными словами, пакет, содержащий идентификатор пакета типа STALL), который описан в разделе "Ошибки запроса" спецификации универсальной последовательной шины. Если устройство не отвечает на застойный пакет, система выдает однокончаемый пакет нулевого сброса на устройство, чтобы помочь ему восстановиться после его остановленного состояния (только Windows XP).

После того как операционная система запрашивает дескриптор строки ОС Майкрософт с устройства, он создает следующий раздел реестра:

HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

Операционная система создает запись реестра с именем osvc в этом разделе реестра, который указывает, поддерживает ли устройство дескрипторы ОС Майкрософт. Если устройство не предоставляет допустимый ответ при первом запросе операционной системы для дескриптора строки ОС Майкрософт, операционная система не выполняет дальнейших запросов для этого дескриптора.

Сведения о записях реестра в этом разделе см. в разделах реестра USB-устройств.

Дополнительные сведения см. в спецификации дескрипторов Microsoft OS 1.0.

Какие типы дескрипторов компонентов ОС поддерживают Windows?

Все сведения, которые должны храниться как дескриптор компонента, должны соответствовать одному из стандартных форматов Майкрософт. Другие дескрипторы функций не могут быть определены или реализованы без согласия Майкрософт. Корпорация Майкрософт определила следующие дескрипторы функций:

  • Расширенный идентификатор compat. Windows использует коды классов и подклассов для поиска соответствующего драйвера по умолчанию для USB-устройства. Однако рабочая группа USB-устройств должна выделить эти коды. Это означает, что устройства, реализующие новые типы функций, часто не имеют соответствующих кодов классов и подклассов, поэтому Windows не может использовать коды для выбора драйвера по умолчанию. IHV может обойти эту проблему, сохраняя сведения в встроенном ПО в качестве дескриптора функции расширенной совместимой ОС. Затем Windows может получить эти сведения, когда устройство подключено и использует его, чтобы определить, какой драйвер по умолчанию нужно загрузить.
  • Расширенные свойства. В настоящее время существует два уровня, на которых можно объявить свойства для USB-устройства: уровень класса или уровень devnode. Дескриптор расширенных свойств ОС позволяет поставщику хранить дополнительные свойства, такие как страницы справки, URL-адреса и встроенное ПО устройства.