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


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

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

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

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

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

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

Дескрипторы 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?

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

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