Обзор перечисления коллекций интерфейсов на составных устройствах USB
Интерфейсы на составном USB-устройстве можно сгруппировать в коллекции. Универсальный родительский драйвер USB (Usbccgp.sys) может перечислять коллекции интерфейсов четырьмя способами.
Эти четыре метода перечисления коллекций интерфейсов организованы иерархически следующим образом:
Предоставляемые поставщиком подпрограммы обратного вызова
Если поставщик зарегистрировал подпрограмму обратного вызова с помощью USB Generic Parent Driver (Usbccgp.sys),универсальный родительский драйвер имеет приоритет к подпрограмме обратного вызова и позволяет подпрограмме обратного вызова группировать интерфейсы, а не использовать другой метод. Дополнительные сведения о перечислении коллекции интерфейсов с помощью подпрограмм обратного вызова, предоставляемых поставщиком, см. в разделе Перечисление коллекций интерфейсов на составных устройствах USB.
Функциональные дескрипторы объединения
. Если поставщик включил перечисление CDC и WMCDC в usb-универсальном родительском драйвере, универсальный родительский драйвер использует функциональные дескрипторы объединения (UFD) для группирования интерфейсов в коллекции. Если этот метод включен, этот метод имеет приоритет над всеми другими методами, за исключением подпрограмм обратного вызова, предоставленных поставщиком.
Дескрипторы связи интерфейса
Если дескрипторы связей интерфейсов (IAD) присутствуют, универсальный родительский драйвер USB всегда группирует интерфейсы с помощью IAD, а не с помощью устаревших методов. Корпорация Майкрософт рекомендует поставщикам использовать идентификаторы IAD для определения коллекций интерфейсов.
Устаревший звуковой метод
Универсальный родительский драйвер USB может перечислять коллекции интерфейсов с помощью устаревших методов, зарезервированных для звуковых функций. Универсальный родительский драйвер не использует этот метод, если на устройстве есть идентификаторы IAD.
Настройка перечисления коллекций интерфейсов для составных устройств
Некоторые USB-устройства имеют коллекции интерфейсов, которые дескриптор связи USB (IAD) не может описать. В Windows Vista и более поздних операционных системах поставщики могут настроить способ определения и перечисления коллекций интерфейсов устройства usb Generic Parent Driver (Usbccgp.sys ). Это делается с помощью подпрограммы обратного вызова перечисления в драйвере фильтра. Подпрограмма обратного вызова помогает универсальному родительскому драйверу определять пользовательские коллекции интерфейсов для устройства.
Чтобы универсальный родительский драйвер определил пользовательские коллекции интерфейсов, поставщик составного устройства должен:
- Реализуйте подпрограмму обратного вызова перечисления (USBC_START_DEVICE_CALLBACK).
- Укажите указатель на подпрограмму обратного вызова в интерфейсе конфигурации USB-устройства (элемент StartDeviceCallback USBC_DEVICE_CONFIGURATION_INTERFACE_V1).
- Укажите INF-файл, соответствующий идентификатору устройства составного устройства, и явно загружает как универсальный родительский драйвер USB, так и драйвер фильтра.
Вопросы реализации
Драйвер фильтра, содержащий подпрограмму обратного вызова перечисления, может быть либо верхним, либо нижним драйвером фильтра. Когда USB-универсальный родительский драйвер получает IRP_MN_START_DEVICE запрос на запуск составного устройства, он запрашивает интерфейс конфигурации USB-устройства, отправляя запрос IRP_MN_QUERY_INTERFACE в начало стека драйверов.
При получении запроса IRP_MN_QUERY_INTERFACE драйвер фильтра должен проверить тип GUID в элементе InterfaceType запроса, чтобы убедиться, что запрошенный интерфейс имеет тип USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID. Если это так, драйвер фильтра возвращает указатель на интерфейс в элементе интерфейса IRP.
Подпрограмма обратного вызова перечисления должна возвращать указатель на массив дескрипторов функций (USBC_FUNCTION_DESCRIPTOR), описывающих коллекции интерфейсов. Каждый дескриптор функции содержит массив дескрипторов интерфейса (USB_INTERFACE_DESCRIPTOR), описывающих коллекцию интерфейсов. Подпрограмма обратного вызова должна выделять дескрипторы функций и дескрипторы интерфейса из нестраничного пула. Универсальный родительский драйвер освобождает эту память. Подпрограмма обратного вызова должна гарантировать, что член NumberOfInterfaces каждого USB_INTERFACE_DESCRIPTOR точно сообщает количество интерфейсов в коллекции интерфейсов.
Универсальный родительский драйвер создает объект физического устройства (PDO) для каждого дескриптора функции.
Интерфейс конфигурации USB-устройства и подпрограмма обратного вызова перечисления приведены в общих родительских подпрограммах драйверов.
Механизм загрузки универсального родительского драйвера USB
Когда составное устройство соответствует требованиям, описанным в перечислении составных устройств USB, операционная система создает совместимый идентификатор USB\COMPOSITE
, указывающий, что устройство составно. Совместимый идентификатор создает совпадение в USB.inf, а операционная система загружает универсальный родительский драйвер USB, автоматически без помощи предоставленного поставщиком INF-файла.
Однако этот механизм по умолчанию не работает для составных устройств, требующих пользовательского перечисления коллекций интерфейсов, так как в механизме по умолчанию система не загружает необходимый драйвер фильтра, предоставленный поставщиком. Чтобы механизм подпрограммы обратного вызова перечисления работал, драйвер фильтра, предоставляющий интерфейс конфигурации USB-устройства, должен быть уже загружен, когда универсальный usb-родительский элемент перечисляет коллекции интерфейсов составного устройства. Для этого требуется, чтобы поставщик составного устройства установил INF-файл, соответствующий идентификатору устройства составного устройства, и явно загружает как универсальный родительский драйвер USB, так и драйвер фильтра.
Поддержка класса беспроводного мобильного коммуникационного устройства
В Windows Vista универсальный родительский драйвер USB (Usbccgp.sys) обеспечивает поддержку устройств, включенных в класс устройства универсальной последовательной шины (USB) связи (CDC) и класс беспроводного мобильного коммуникационного устройства USB (WMCDC).
Спецификация класса беспроводного мобильного коммуникационного устройства USB (WMCDC) устанавливает стандарт для подключения, управления и обмена содержимым между узлом и беспроводным мобильным устройством (например, сотовым телефоном), когда устройство подключено к USB-порту. WMCDC — это расширение класса устройства связи (CDC), который включает широкий спектр сетевых устройств и общения. В этом разделе описывается архитектура, поддерживающая устройства CDC и WMCDC в операционных системах Windows.
Устройства WMCDC состоят из нескольких функций, сгруппированных в логические наборы. Большинство устройств WMCDC имеют один логический набор, но устройство может иметь несколько логических телефонов. Логические телефонные наборы обычно включают такие функции, как данные/факс-модем, хранилище объектов и средство управления вызовами. Логический набор телефонов также может включать вспомогательные функции, определенные другими спецификациями USB, такими как спецификация класса USB Audio, спецификация класса USB Human Input Device (HID) и спецификация класса ВИДЕО USB.
Архитектура Windows WMCDC использует собственные драйверы Windows для управления функциями устройства WMCDC. Например, вы можете использовать подсистему интерфейса программы приложения телефонии Windows (TAPI) для управления функциями голосового и факс-модема устройства и подсистемы спецификации сетевого драйвера Windows (NDIS) для управления функцией локальной сети Ethernet устройства. Кроме того, вы можете управлять некоторыми функциями, такими как функция Протокола ОБМЕНА объектами (OBEX), в пользовательском программном обеспечении с помощью WinUSB (Winusb.sys).
На этом рисунке показан пример стека драйверов для устройства WMCDC.
На предыдущем рисунке устройство WMCDC содержит один логический набор телефонов: функцию OBEX и функцию модема. Предоставленный поставщиком INF-файл загружает собственные драйверы Windows для управления модемом. Функция OBEX управляется предоставленным поставщиком драйвером пользовательского режима, который выполняется в среда выполнения платформы драйвера режима пользователя (UMDF). Драйвер пользовательского режима использует протокол Windows Portable Devices (WPD) для взаимодействия с пользовательскими приложениями и интерфейсом, экспортируемым в WinUSB для разработчиков для обмена данными с USB-стеком. Как правило, предоставленный поставщиком INF-файл загружает отдельный экземпляр Winusb.sys для каждой коллекции интерфейсов, которая использует Winusb.sys.
Параметры реестра
Стек USB не поддерживает WMCDC автоматически. Необходимо указать INF-файл, который загружает экземпляр Usbccgp.sys. INF-файл должен содержать раздел AddReg , который задает значение реестра EnumeratorClass в ключе программного обеспечения, связанном с Usbccgp.sys, значением REG_BINARY, созданным из трех чисел: 0x02, 0x00 и 0x 000. В следующем примере кода из примера INF-файла показано, как задать ПеречислениеClass соответствующим значением.
[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg
[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services
[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass, 0x00000001,02,00,00
Значение, которое необходимо назначить перечислителю, создается из трех байтовых двоичных значений, представленных в INF-файле парами шестнадцатеричных цифр: 02, 00 и 00. Эти три числа соответствуют значениям, которые форум разработчиков USB назначил классу устройств CDC, подклассу устройства CDC и протоколу устройства CDC соответственно.
В следующих разделах описаны WMCDC:
Перечисление коллекций интерфейсов в WMCDC
Класс беспроводного мобильного коммуникационного устройства USB (WMCDC) — это подкласс класса устройства USB-связи (CDC). Спецификация WMCDC расширяется, но не существенно изменяет рекомендации CDC для определения коллекций интерфейсов. В частности, устройства WMCDC должны соответствовать рекомендациям CDC по определению коллекций интерфейсов.
Коллекции интерфейсов CDC содержат главный интерфейс (USB_INTERFACE_DESCRIPTOR), который принадлежит классу интерфейса связи (bInterfaceClass = 0x02
) или классу интерфейса данных (bInterfaceClass = 0x0A
). Если главный интерфейс принадлежит классу интерфейса коммуникации (что является типичной ситуацией), подкласс главного интерфейса (bInterfaceSubClass) указывает модель управления CDC. Модель управления указывает тип интерфейсов, включенных в коллекцию интерфейсов. Описание моделей управления, которые определяет форум разработчиков USB, см. в спецификации CDC и спецификации WMCDC.
За главным интерфейсом коллекции интерфейсов следует набор обязательных функциональных дескрипторов для определенных классов, включая функциональный дескриптор объединения (UFD). В UFD перечислены номера интерфейсов, принадлежащих коллекции. Поле bMasterInterface для UFD содержит количество главного интерфейса. Нуль или более полей bSubordinateInterface содержат числа других (подчиненных) интерфейсов в коллекции.
Для большинства типов моделей управления usb Generic Parent Driver (Usbccgp.sys) создает один объект физического устройства (PDO) для каждого UFD. Но некоторые модели управления включают звуковой интерфейс, к которому перечисляется универсальный родительский драйвер отдельно от коллекции интерфейсов, к которой принадлежит звуковой интерфейс. Звуковой интерфейс отображается в списке подчиненных интерфейсов (bSubordinateInterface) в UFD коллекции интерфейсов, но универсальный родительский драйвер создает отдельный PDO для звукового интерфейса. PDO для звукового интерфейса и PDO для коллекции интерфейсов, к которой принадлежит звуковой интерфейс, непосредственно над функциональным объектом устройства (FDO) родительского составного устройства в дереве объектов устройства. PDO звукового интерфейса не является дочерним элементом коллекции интерфейсов.
Существуют две модели управления, характеристики перечисления которых настраиваются в реестре: модель управления беспроводной рукой (WHCM), которая определяет логический набор рук и модель управления "Протокол обмена объектами" (OBEX). Чтобы настроить характеристики перечисления этих двух моделей управления, необходимо указать INF-файл, который загружает экземпляр Usbccgp.sys и задает значение CdcFlags в ключе программного обеспечения для этого экземпляра Usbccgp.sys. В следующей таблице описаны параметры конфигурации CdcFlags.
Бит CdcFlags | Битовое значение 0 | Битовое значение 1 |
---|---|---|
0 (маска = 0x00000001) | Универсальный родительский драйвер USB создает отдельный PDO для каждого интерфейса OBEX. | Универсальный родительский драйвер USB создает один PDO для всех интерфейсов OBEX. |
1 (маска = 0x00000010) | Универсальный родительский драйвер USB не создает PDOs для интерфейсов WHCM (логические телефонные наборы). Эти интерфейсы остаются скрытыми с точки зрения дерева объектов устройства. | Универсальный родительский драйвер USB создает PDO для каждого интерфейса WHCM. |
Например, чтобы очистить оба бита (задайте для них значение 0), INF-файл должен иметь следующую строку в разделе DDInstall.AddReg .
HKR, , CdcFlags, 0x00010001, 0x00000000
Чтобы задать оба бита 1, INF-файл должен иметь следующую строку.
HKR, , CdcFlags, 0x00010001, 0x00000011
Чтобы задать как бит 0, так и 1 бит 1 до 0, INF-файл должен иметь следующую строку.
HKR, , CdcFlags, 0x00010001, 0x00000001
Любой бит можно задать или сбросить независимо от другого бита.
На следующих рисунках показано, как различные конфигурации реестра могут создавать разные деревья устройств для одного устройства.
На следующем рисунке показана конфигурация PDO, когда значение 0 и бит 1 cdcFlags имеют значение 0.
Коллекция интерфейсов беспроводного набора телефонов (WHCM) на предыдущем рисунке содержит три подчиненные коллекции интерфейсов (bSubordinateInterface): две коллекции OBEX и коллекцию модемов. Бит 0 из CdcFlags равен 0, поэтому USB-универсальный родительский драйвер не создает PDO для коллекции интерфейсов WHCM. Бит 1 из CdcFlags равен 0, поэтому USB-универсальный родительский драйвер создает отдельную PDO для каждой коллекции интерфейсов OBEX.
На следующем рисунке показана конфигурация PDO при установке бита 0 и 1 бита CdcFlags .
Так как бит 0 cdcFlags имеет значение 1, usb-универсальный родительский драйвер создает PDO для коллекции интерфейсов WHCM. Так как бит 1 cdcFlags имеет значение 1, универсальный родительский драйвер USB группирует две коллекции OBEX и создает один PDO для обеих коллекций OBEX.
Может потребоваться представить коллекции OBEX с одним PDO на уровне ядра и различать каждую отдельную коллекцию OBEX в драйвере пользовательского режима. Протокол Windows Portable Devices (WPD) может помочь вам в мультиплексных потоках данных между различными функциями OBEX на уровне пользователя, когда все функции OBEX группируются в один PDO на уровне ядра.
В следующем примере INF-файл загружает usb-универсальный родительский драйвер для управления устройством WMCDC и указывает USB-универсальный родительский родитель создать PDOs для логических телефонов и создать единый PDO для всех коллекций OBEX в логическом наборе.
[Version]
Signature="$Windows NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
Provider=%MSFT%
DriverVer=07/01/2001,5.1.2600.0
CatalogFile=ExampleCatalog.cat
PnpLockdown=1
[ControlFlags]
ExcludeFromSelect=*
[Manufacturer]
CompanyName=CompanyName,NTamd64
[CompanyName.NTamd64]
%COMPANYNAME.DeviceDesc%=CCGPDriverInstall,USB\Vid_????&Pid_????
[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg
[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services
[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass,0x00000001,02,00,00
HKR,,CdcFlags,0x00010001,0x00010001
[Strings]
MSFT="Microsoft"
COMPANYNAME.DeviceDesc="USB Phone Parent"
Обработка коллекций интерфейсов CDC и WMCDC
USB-универсальный родительский драйвер обрабатывает интерфейсы беспроводной модели управления (WHCM) специально.
В следующем списке приведены наиболее важные способы обработки коллекций интерфейсов CDC и WMCDC, отличных от других коллекций интерфейсов:
- Класс беспроводного мобильного коммуникационного устройства разрешает ограниченное количество вложенных коллекций интерфейсов. В частности, коллекция интерфейсов логического набора (т. е. коллекция интерфейсов WHCM) может содержать другие подчиненные коллекции интерфейсов. Например, телефон, совместимый с WMCDC, может иметь коллекцию интерфейсов WHCM, которая, в свою очередь, содержит коллекцию абстрактных моделей управления и коллекцию OBEX.
- Вы можете настроить универсальный родительский драйвер USB, чтобы не перечислять коллекции интерфейсов WHCM. Коллекции интерфейсов WHCM, которые не перечисляются, остаются скрытыми, но универсальный родительский драйвер использует сведения из дескрипторов функций объединения (UFD), принадлежащих коллекциям интерфейсов WHCM для группировки и перечисления подчиненных коллекций интерфейсов.
- Вы можете настроить универсальный родительский драйвер USB для создания отдельных объектов физических устройств (PDOs) для коллекций интерфейсов модели управления OBEX или создать один PDO для всех коллекций интерфейсов моделей управления OBEX.
- Список номеров интерфейса в UFD может иметь пробелы. То есть номера интерфейса UFD могут ссылаться на интерфейсы, которые не являются смежными. Этот тип нумерирования недопустим, например для дескриптора ассоциации USB (IAD), интерфейсы которого должны быть последовательными и иметь последовательные числа.
- UFDs может включать связанные коллекции аудио интерфейсов
- Идентификаторы оборудования для коллекций интерфейсов CDC и WMCDC должны включать подкласс интерфейса. Другие USB-интерфейсы, идентификаторы оборудования которых содержат суффикс MI_%02X, указывающий номер интерфейса, не содержат сведения о подклассе интерфейса. Сведения подкласса включаются в идентификатор оборудования, чтобы поставщики могли предоставлять INF-файлы с идентификатором оборудования для определенных коллекций интерфейсов, а не полагаться на позицию интерфейса в макете дескриптора, чтобы определить, какой драйвер необходимо загрузить для коллекции. Сведения подкласса в идентификаторе оборудования также позволяют постепенно переходить от текущих драйверов, предоставляемых поставщиком, которые управляют коллекциями интерфейсов WMCDC в альтернативные варианты, такие как драйверы пользовательского режима. Общие сведения о том, как форматируются идентификаторы аппаратного интерфейса USB, см. в разделе "Идентификаторы для USB-устройств".
Модели управления CDC и WMCDC
В разделе "Модели управления CDC и WMCDC" описываются свойства коллекций интерфейсов, поддерживаемых в операционных системах Microsoft Windows. Каждое описание включает в себя, помимо прочего, список идентификаторов оборудования и устройств, создаваемых универсальным родительским драйвером USB для коллекции интерфейсов.
Большинство коллекций интерфейсов, поддерживаемых Windows, соответствуют моделям управления, принадлежащим классу устройства связи (CDC) и классу беспроводного мобильного коммуникационного устройства (WMCDC), но операционная система также поддерживает устаревшие коллекции аудио-и видео-интерфейсов и коллекцию интерфейсов, определяемую консорциумом по продвижению мобильных вычислений (MCPC).
Коллекции интерфейсов, описанные в этом разделе, приведены ниже.
Интерфейсы аудиоклассов
Коллекции интерфейсов классов USB Audio Device, происходящие на устройствах CDC и WMCDC, имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определение класса устройств универсальной шины для звуковых устройств версии 1.0. |
Класс | Все интерфейсы в коллекции интерфейсов должны принадлежать классу аудиоустройств (0x01). |
Подкласс | Каждый интерфейс в коллекции интерфейсов должен иметь другой подкласс из первого интерфейса в коллекции. |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Ноль или более смежных интерфейсов, принадлежащих подклассу потоковой передачи (0x02). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x USB\Vid_%04x&Pid_%04x&MI_%02x Идентификаторы оборудования для коллекций звуковых интерфейсов не содержат сведения о классе интерфейса. |
Совместимые ИД | USB\Class_01&SubClass_01&Prot_00 USB\Class_01&SubClass_01 USB\Class_01 Формат совместимых идентификаторов для коллекций звуковых интерфейсов содержит внедренные сведения о классе интерфейса, подклассе интерфейса и протоколе. Для коллекций аудио интерфейсов на устройстве CDC или WMCDC класс интерфейса равен 01, подкласс равен 01, а протокол равен 00. |
Модель абстрактного элемента управления CDC
Существует две версии абстрактной модели управления (ACM). Исходная версия определена в спецификации класса USB-устройства связи (CDC). Спецификация класса беспроводного мобильного коммуникационного устройства USB (WMCDC) содержит расширенное определение ACM.
Коллекции интерфейсов, соответствующие спецификации WMCDC, описаны на этой странице.
Коллекции интерфейсов, соответствующие спецификации CDC, имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.6.2. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | ACM (0x02). |
Протокол | Любой. |
Enumerated | Да. |
Связанные интерфейсы | Один интерфейс класса данных и необязательные интерфейсы аудиоклассов, ссылающиеся на функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02 USB\Vid_%04x&Pid_%04x&Cdc_02&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_02 |
Совместимые ИД | USB\Class_02&SubClass_02&Prot_%02X USB\Class_02&SubClass_02 USB\Class_02 |
Специальная обработка | UFD может ссылаться на коллекцию звуковых интерфейсов, перечисленную независимо от коллекции интерфейсов ACM. |
Модель сетевого управления ATM CDC
В коллекциях интерфейсов модели сетевого управления ATM (ANCM) USB CDC имеются следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.8.3 |
Класс главного интерфейса | Класс интерфейса связи (0x02) |
Подкласс главного интерфейса | ANCM (0x07) |
Протокол | Нет (0x00) |
Enumerated | Да |
Связанные интерфейсы | Один интерфейс класса данных, на который ссылается функциональный дескриптор Union (UFD) |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07 USB\Vid_%04x&Pid_%04x&Cdc_07&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_07 |
Совместимые ИД | USB\Class_02&SubClass_07&Prot_00 USB\Class_02&SubClass_07 USB\Class_02 |
Специальная обработка | нет |
Модель управления CDC CAPI
Коллекции интерфейсов интерфейсов модели управления API COMMON ISDN (CAPI) USB CDC имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.7.2 |
Класс главного интерфейса | Класс интерфейса связи (0x02) |
Подкласс главного интерфейса | CAPI (0x05) |
Протокол | Нет (0x00) |
Enumerated | Да |
Связанные интерфейсы | Один интерфейс класса данных, на который ссылается функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05 |
Совместимые ИД | USB\Class_02&SubClass_05&Prot_00 USB\Class_02&SubClass_05 |
Специальная обработка | нет |
Модель управления прямой линией CDC
В коллекциях интерфейсов модели управления прямой линией USB CDC (DLCM) имеются следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.6.1. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | DLCM (0x01). |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Класс аудио или определяемые поставщиком интерфейсы, ссылающиеся на функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01 USB\Vid_%04x&Pid_%04x&Cdc_01&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_01 |
Совместимые ИД | USB\Class_02&SubClass_01&Prot_00 USB\Class_02&SubClass_01``USB\Class_02 |
Специальная обработка | UFD ссылается на коллекцию интерфейсов аудиоклассов, перечисленную независимо от коллекции интерфейсов DLCM. |
Модель управления сетью CDC Ethernet
Коллекции интерфейсов сетевых интерфейсов USB CDC Ethernet (ENCM) имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.8.2. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | ENCM (0x06). |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Один интерфейс класса данных, на который ссылается функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06 USB\Vid_%04x&Pid_%04x&Cdc_06&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_06 |
Совместимые ИД | USB\Class_02&SubClass_06&Prot_00 USB\Class_02&SubClass_06 USB\Class_02 |
Специальная обработка | Совместимые идентификаторы этой модели управления соответствуют предоставленному Корпорацией Майкрософт INF-файлу. Если операционная система не находит совпадения для одного из аппаратных идентификаторов в предоставленном поставщиком INF-файле, система автоматически загружает собственный мини-драйвер NDIS для управления коллекцией интерфейсов. |
Модель управления ISDN с несколькими каналами CDC
Коллекции интерфейсов многоканавной модели управления ISDN (MCCM) USB CDC имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.7.1 |
Класс главного интерфейса | Класс интерфейса связи (0x02) |
Подкласс главного интерфейса | MCCM (0x04) |
Протокол | Нет (0x00) |
Enumerated | Да |
Связанные интерфейсы | Несколько интерфейсов класса данных, на которые ссылается функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04 USB\Vid_%04x&Pid_%04x&Cdc_04&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_04 |
Совместимые ИД | USB\Class_02&SubClass_04&Prot_00 USB\Class_02&SubClass_04 USB\Class_02 |
Специальная обработка | нет |
Модель управления телефоном CDC
Коллекции интерфейсов управления телефоном USB CDC имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.6.3. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | TCM (0x03). |
Протокол | Любой. |
Enumerated | Да. |
Связанные интерфейсы | Интерфейсы аудиоклассов, ссылающиеся на функциональный дескриптор объединения (UFD). |
Идентификатор оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03 USB\Vid_%04x&Pid_%04x&Cdc_03&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_03 |
Совместимый идентификатор | USB\Class_02&SubClass_03&Prot_%02X USB\Class_02&SubClass_03 USB\Class_02 |
Специальная обработка | UFD может ссылаться на коллекцию интерфейсов аудиоклассов, перечисленную независимо от коллекции интерфейсов TCM. |
Уникальные интерфейсы поставщика MCPC
Консорциум по продвижению мобильных вычислений (MCPC) определил формат коллекций интерфейсов до спецификации беспроводного мобильного коммуникационного устройства (WMCDC) в формате для устройств CDC, уникальных поставщиком. Поэтому коллекции интерфейсов MCPC не соответствуют стандарту WMCDC.
Однако универсальный родительский драйвер USB может перечислить коллекции интерфейсов MCPC, если WMCDC включен. Коллекции интерфейсов MCPC имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Спецификация GL-004 консорциума по продвижению мобильных вычислений (MCPC) |
Класс | CDC (0x02) |
Подкласс | 0x88 |
Протокол | Нет (0x00) |
Enumerated | Да |
Связанные интерфейсы | Ноль или больше интерфейсов класса данных, на которые ссылается функциональный дескриптор объединения (UFD) |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88 USB\Vid_%04x&Pid_%04x&Cdc_88&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_88 |
Совместимые ИД | USB\Class_02&SubClass_88&Prot_00 USB\Class_02&SubClass_88 USB\Class_02 |
Специальная обработка | нет |
Интерфейсы классов видео
Коллекции интерфейсов классов usb-видеоустройств, происходящие на устройствах CDC и WMCDC, имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Определение класса устройств универсальной шины для видеоустройств версии 1.0. |
Класс | Видео (0x0E). |
Подкласс | Управление видео (0x01). |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Ноль или более смежных интерфейсов, принадлежащих подклассу потоковой передачи (0x02). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x USB\Vid_%04x&Pid_%04x&MI_%02x |
Совместимые ИД | USB\Class_0E&SubClass_01&Prot_00 USB\Class_0E&SubClass_01 USB\Class_0E |
Специальная обработка | Коллекции интерфейсов видеоклассов получают специальную обработку на устройствах CDC. На устройствах, отличных от CDC, коллекции интерфейсов видеоклассов определяются дескрипторами сопоставления интерфейсов (IAD). На устройствах CDC коллекции интерфейсов видеоклассов определяются функциональными дескрипторами объединения (UFD). |
Модель абстрактного элемента управления WMCDC
Существует две версии абстрактной модели управления (ACM). Исходная версия определена в спецификации класса USB-устройства связи (CDC). Спецификация класса беспроводного мобильного коммуникационного устройства USB (WMCDC) содержит расширенное определение ACM. Коллекции ACM, содержащие функцию факса или модема, должны использовать определение ACM WMCDC, а не исходное определение CDC ACM.
Коллекции интерфейсов, соответствующие спецификации CDC, описаны на этой странице.
Коллекции интерфейсов, соответствующие спецификации WMCDC, имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Спецификация подкласса УНИВЕРСАЛЬНОй последовательной шины CDC для устройств беспроводной мобильной связи версии 1.0, раздел 6.2. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | ACM (0x02). |
Протокол | Если в коллекции используется протокол набора команд AT, значение протокола, внедренное в совместимые идентификаторы, 0x01. Если коллекция использует один из протоколов, описываемых спецификацией WMCDC, значение протокола, внедренное в совместимые идентификаторы, 0x2 через 0x06 или 0xFE. |
Enumerated | Да. |
Связанные интерфейсы | Один интерфейс класса данных, на который ссылается функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem USB\Vid_%04x&Pid_%04x&Cdc_Modem&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_Modem |
Совместимые ИД | USB\Class_02&SubClass_Modem&Prot_%02X USB\Class_02&SubClass_Modem USB\Class_02 |
Специальная обработка | UFD может ссылаться на коллекцию аудио интерфейсов, перечисленную независимо от коллекции интерфейсов ACM. Коллекции интерфейсов должны соответствовать специальным требованиям дескриптора и конечной точки, указанным в разделе 6.2 спецификации WMCDC. Если коллекция интерфейсов не соответствует требованиям WMCDC, но интерфейс соответствует требованиям CDC, USB-универсальный родительский драйвер перечисляет коллекцию интерфейсов и универсальные аппаратные идентификаторы с форматами CDC. Совместимые идентификаторы этой модели управления соответствуют предоставленному Корпорацией Майкрософт INF-файлу. Если операционная система не находит совпадения для одного из аппаратных идентификаторов в предоставленном поставщиком INF-файле, система автоматически загружает собственный драйвер программирования приложений телефонии (TAPI) для управления функцией модема и задает соответствующие параметры реестра TAPI, если код протокола не 0xFE. Если код протокола 0xFE, поставщик должен предоставить устройство или совместного установщика класса, чтобы правильно заполнить параметры реестра TAPI. |
Модель управления устройствами WMCDC
Коллекции интерфейсов управления устройствами USB WMCDC (DMM) имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Спецификация подкласса универсальной последовательной шины CDC для беспроводных мобильных коммуникаций, версия 1.0, раздел 6.6. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | DMM (0x09). |
Протокол | Любой. |
Enumerated | Да. |
Связанные интерфейсы | Нет. |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09 USB\Vid_%04x&Pid_%04x&Cdc_09&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_09 |
Совместимые ИД | USB\Class_02&SubClass_09&Prot_%02X USB\Class_02&SubClass_09 USB\Class_02 |
Специальная обработка | Эта модель управления не использует функциональный дескриптор объединения (UFD). |
Модель мобильной прямой линии WMCDC
Коллекции интерфейсов интерфейсов USB WMCDC для мобильных прямых линий (MDLM) имеют следующие свойства:
Свойство | Description |
---|---|
Справочные материалы | Спецификация подкласса универсальной шины CDC для беспроводных мобильных коммуникаций, версия 1.0, раздел 6.7 |
Класс главного интерфейса | Класс интерфейса связи (0x02) |
Подкласс главного интерфейса | MDLM (0x0A) |
Протокол | Любые |
Enumerated | Да |
Связанные интерфейсы | Один или несколько интерфейсов класса данных, на которые ссылается функциональный дескриптор объединения (UFD) |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A USB\Vid_%04x&Pid_%04x&Cdc_0A&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_0A |
Совместимые ИД | USB\Class_02&SubClass_0A&Prot_%02X USB\Class_02&SubClass_0A USB\Class_02 |
Специальная обработка | Нет. |
Модель управления OBEX WMCDC (несколько PDOS)
Существует два способа перечисления коллекций интерфейсов интерфейсов модели управления "Протокол обмена объектами" (OBEX). Универсальный родительский драйвер USB может объединить все интерфейсы OBEX и создать один объект физического устройства (PDO) для всех интерфейсов OBEX, или родительский драйвер может создать отдельный PDO для каждого интерфейса OBEX.
Если USB-универсальный родительский драйвер назначает отдельные PDOS каждому интерфейсу OBEX, то у POS есть следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Спецификация подкласса универсальной последовательной шины CDC для беспроводных мобильных коммуникаций, версия 1.0, раздел 6.5. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | OBEX (0x0B). |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Один интерфейс класса данных, на который ссылается функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B USB\Vid_%04x&Pid_%04x&Cdc_0B&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_0B |
Совместимые ИД | USB\Class_02&SubClass_0B&Prot_00 USB\Class_02&SubClass_0B USB\Class_02 |
Специальная обработка | Параметры реестра, связанные с экземпляром универсального родительского драйвера USB, который управляет составным устройством, определяют, управляются ли интерфейсы OBEX одним PDO или несколькими PDOS. |
Модель управления OBEX WMCDC (один PDO)
Существует два способа перечисления коллекций интерфейсов интерфейсов модели обмена объектами (OBEX): универсальный родительский драйвер USB может объединить все интерфейсы OBEX и создать один объект физического устройства (PDO) для всех интерфейсов OBEX, или родительский драйвер может создать отдельный PDO для каждого интерфейса OBEX.
Когда универсальный родительский драйвер USB назначает один PDO всем интерфейсам OBEX, PDO имеет следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Спецификация подкласса универсальной последовательной шины CDC для беспроводных мобильных коммуникаций, версия 1.0, раздел 6.5. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | OBEX (0x0B). |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Один интерфейс класса данных, на который ссылается функциональный дескриптор объединения (UFD). |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX USB\Vid_%04x&Pid_%04x&WPD_OBEX&MI_%02x USB\Vid_%04x&Pid_%04x&WPD_OBEX |
Совместимые ИД | USB\Class_02&WPD_OBEX USB\Class_02 |
Специальная обработка | Параметры реестра, связанные с экземпляром универсального родительского драйвера USB, который управляет составным устройством, определяют, управляются ли интерфейсы OBEX одним PDO или несколькими PDOS. Описание параметров реестра, указывающих, как универсальный родительский драйвер USB перечисляет интерфейсы OBEX, см. в разделе Перечисление коллекций интерфейсов на составных устройствах USB. |
Модель управления беспроводным набором телефонов WMCDC
Универсальный родительский драйвер USB не всегда перечисляет коллекции интерфейсов беспроводной модели управления наборами телефонов (WHCM). Параметры реестра, связанные с экземпляром универсального родительского драйвера USB, который управляет коллекцией интерфейсов WHCM, определяет, создает ли универсальный родительский драйвер USB объект физического устройства (PDO) для коллекции интерфейсов или нет. Описание параметров реестра, указывающих, как универсальный родительский драйвер USB перечисляет интерфейсы WHCM, см. в разделе Перечисление коллекций интерфейсов на составных устройствах USB.
Перечисленные коллекции интерфейсов WHCM имеют следующие свойства.
Свойство | Description |
---|---|
Справочные материалы | Спецификация подкласса универсальной последовательной шины CDC для устройств беспроводной мобильной связи версии 1.0, раздел 6.1. |
Класс главного интерфейса | Класс интерфейса связи (0x02). |
Подкласс главного интерфейса | WHCM (0x08). |
Протокол | Нет (0x00). |
Enumerated | Да. |
Связанные интерфейсы | Нет. |
Идентификаторы оборудования | USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08&MI_%02x USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08 USB\Vid_%04x&Pid_%04x&Cdc_08&MI_%02x USB\Vid_%04x&Pid_%04x&Cdc_08 |
Совместимые ИД | USB\Class_02&SubClass_08&Prot_00 USB\Class_02&SubClass_08 USB\Class_02 |
Специальная обработка | Функциональный дескриптор объединения (UFD) определяет интерфейсы, связанные с логическим набором рук. |
Форматы идентификаторов оборудования в предыдущих разделах описывают следующие соглашения:
- Формат печати на языке C представляет целые числа. Например, "%04x" означает 4-цифрное шестнадцатеричное целое число, "%02x" означает 2-разрядное шестнадцатеричное целое число и т. д.
- Целое число, следующее за строкой "Vid_", является шестнадцатеричным представлением шестнадцатеричного представления кода поставщика, который USB-комитет (<www.usb.org>) назначает поставщику.
- Целое число, следующее за строкой "Pid_", представляет собой шестнадцатеричное представление шестнадцатеричного представления кода продукта, который поставщик назначает устройству.
- Целое число, следующее за строкой "Rev_", представляет собой шестнадцатеричное представление шестнадцатеричного числа номера редакции устройства.
- Целое число, следующее за строкой "Cdc_", является подклассом интерфейса.
- Целое число, следующее за строкой "Prot_", является номером протокола.
- Целое число, следующее за строкой "MI_", является шестнадцатеричным представлением шестнадцатеричного числа интерфейса, которое извлекается из поля bInterfaceNumber дескриптора интерфейса.
Перечисление коллекций интерфейсов на USB-устройствах с идентификаторами IAD
Если у составного USB-устройства есть дескриптор связи интерфейсов (IAD) в встроенном ПО, Windows перечисляет коллекции интерфейсов, как если бы каждая коллекция была одним устройством и назначает один объект физического устройства (PDO) каждой коллекции интерфейсов и связывает аппаратные и совместимые идентификаторы (идентификаторы) с PDO. Подробное описание идентификаторов IAD см . в описании дескриптора ассоциации ИНТЕРФЕЙСов USB. В этом разделе описываются идентификаторы оборудования и совместимые идентификаторы(идентификаторы), назначенные коллекциям интерфейсов, связанным с IAD.
Аппаратные идентификаторы USB-устройств с идентификаторами IAD
USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)
USB\VID_v(4)&PID_p(4)&MI_z(2)
В этих аппаратных идентификаторах
- v(4) — это четырехзначный код поставщика, который USB-комитет назначает поставщику и извлекается из поля idVendor дескриптора устройства.
- p(4) — это четырехзначный код продукта, который поставщик назначает устройству и извлекается из поля idProduct дескриптора устройства.
- r(4) — это номер выпуска четырехзначного устройства в двоично закодированном десятичном исправлении, который поставщик назначает устройству и извлекается из поля bcdDevice дескриптора устройства.
- z(2) — это двухзначный номер интерфейса, извлеченный из поля BFirstInterface IAD.
Совместимые идентификаторы USB-устройств с идентификаторами IAD
USB\Class_c(2)&SubClass_s(2)&Prot_p(2)
USB\Class_c(2)&SubClass_s(2)
USB\Class_c(2)
В этих совместимых идентификаторах, c(2), s(2) и p(2) содержат значения, принятые соответственно из BFunctionClass, bFunctionSubClass и bFunctionProtocol полей IAD.
Рекурсивно использовать идентификаторы IAD нельзя для привязки функций. В частности, если у устройства есть дескрипторы IAD в встроенном ПО, универсальный родительский драйвер не группирует интерфейсы по классу звукового устройства, как описано в разделе Перечисление коллекций интерфейсов на составных устройствах USB.
Перечисление коллекций интерфейсов на звуковых устройствах без идентификаторов IAD
Для звуковых устройств операционная система Windows может перечислять группы интерфейсов (коллекций интерфейсов), связанных с функцией, и назначать одному объекту физического устройства (PDO) каждой группе, даже если устройство не имеет дескриптора связи интерфейса (IAD).
Операционная система группирует интерфейсы составных звуковых устройств в коллекции интерфейсов, если интерфейсы соответствуют следующим условиям:
- Все интерфейсы в коллекции интерфейсов должны быть последовательными. Другими словами, интерфейсы должны находиться рядом друг с другом в памяти встроенного ПО.
- Все интерфейсы в коллекции интерфейсов должны принадлежать классу аудиоустройства. Производитель устройства указывает, что интерфейс принадлежит классу звукового устройства, назначив значение 0x01 полю bInterfaceClass дескриптора интерфейса.
- Каждый интерфейс в коллекции интерфейсов должен иметь другой подкласс из первого интерфейса в коллекции. Поле bInterfaceSubClass дескриптора интерфейса указывает подкласс устройства интерфейса.
Если интерфейс не соответствует всем этим трем условиям, Windows попытается перечислить его отдельно, а не сгруппировать его с другими интерфейсами аудиоклассов.
Операционная система не группирует интерфейсы аудиоклассов специально, если дескриптор связи интерфейса (IAD) присутствует в встроенном ПО устройства. Метод IAD всегда является предпочтительным методом группировки USB-интерфейсов.
В этом разделе описываются аппаратные и совместимые идентификаторы(идентификаторы), связанные с PDO, созданной операционной системой для коллекции интерфейсов, интерфейсы которых принадлежат классу аудиоустройства.
Аппаратные идентификаторы звуковых устройств без идентификаторов IAD
USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)
USB\VID_v(4)&PID_p(4)&MI_z(2)
В этих аппаратных идентификаторах
- v(4) — это четырехзначный код поставщика, который комитет по стандартам USB назначает поставщику и извлекается из поля idVendor дескриптора устройства.
- p(4) — это четырехзначный код продукта, который поставщик назначает устройству и извлекается из поля idProduct дескриптора устройства.
- r(4) — это номер выпуска четырехзначного устройства в двоично закодированном десятичном исправлении, который поставщик назначает устройству и извлекается из поля bcdDevice дескриптора устройства.
- z(2) — это двухзначный номер интерфейса, извлеченный из поля bInterfaceNumber дескриптора интерфейса.
Совместимые идентификаторы звуковых устройств без идентификаторов IAD
USB\Class_c(2)&SubClass_s(2)&Prot_p(2)
USB\Class_c(2)&SubClass_s(2)
USB\Class_c(2)
В этих совместимых идентификаторах, c(2), s(2) и p(2) содержат значения, принятые соответственно из bInterfaceClass, bInterfaceSubClass и bInterfaceProtocol первого дескриптора USB-интерфейса в каждой коллекции интерфейсов.