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

Сводка

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

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

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

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

Поддержка Operating-System

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

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

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

  • Windows 8.1

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

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

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

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

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

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

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

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

HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

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

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

Дополнительные сведения см. в разделе Дескрипторы ОС Майкрософт.

Какие типы дескрипторов функций ОС поддерживаются Windows?

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

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

Спецификация дескрипторов Microsoft OS 1.0
Спецификация дескрипторов Microsoft OS 2.0
Создание USB-устройств для Windows