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


Общие сведения о перечислении коллекций интерфейсов на составных USB-устройствах

Интерфейсы на составном USB-устройстве можно сгруппировать в коллекции. Универсальный родительский драйвер USB (Usbccgp.sys) может перечислять коллекции интерфейсов четырьмя способами.

Эти четыре метода перечисления коллекций интерфейсов упорядочены иерархически следующим образом:

  1. Процедуры обратного вызова, предоставляемые поставщиком

    Если поставщик зарегистрировал подпрограмму обратного вызова в универсальном родительском драйвере USB (Usbccgp.sys), универсальный родительский драйвер имеет приоритет перед подпрограммой обратного вызова и позволяет подпрограмме обратного вызова группировать интерфейсы, а не использовать какой-то другой метод. Дополнительные сведения о перечислении коллекции интерфейсов с помощью процедур обратного вызова, предоставляемых поставщиком, см. в статье Перечисление коллекций интерфейсов на составных usb-устройствах.

  2. Функциональные дескрипторы объединения

    . Если поставщик включил перечисление CDC и WMCDC в универсальном родительском драйвере USB, универсальный родительский драйвер использует функциональные дескрипторы объединения (UFD) для группировки интерфейсов в коллекции. Если этот параметр включен, этот метод имеет приоритет над всеми другими методами, за исключением процедур обратного вызова, предоставляемых поставщиком.

  3. Дескрипторы сопоставлений интерфейсов

    Если дескрипторы ассоциаций интерфейсов (IAD) присутствуют, универсальный родительский драйвер USB всегда группирует интерфейсы с помощью IAD, а не с помощью устаревших методов. Корпорация Майкрософт рекомендует поставщикам использовать IAD для определения коллекций интерфейсов.

  4. Устаревший звуковой метод

    Универсальный родительский драйвер USB может перечислять коллекции интерфейсов с помощью устаревших методов, зарезервированных для звуковых функций. Универсальный родительский драйвер не использует этот метод, если на устройстве есть идентификаторы ID.

Настройка перечисления коллекций интерфейсов для составных устройств

Некоторые USB-устройства имеют коллекции интерфейсов, которые не может описать дескриптор ассоциаций usb-интерфейсов (IAD). В Windows Vista и более поздних операционных системах поставщики могут настроить способ определения и перечисления коллекций интерфейсов устройства в универсальном родительском драйвере USB (Usbccgp.sys). Это делается с помощью процедуры обратного вызова перечисления в драйвере фильтра. Подпрограмма обратного вызова помогает универсальному родительскому драйверу определить коллекции пользовательских интерфейсов для устройства.

Чтобы универсальный родительский драйвер определял коллекции пользовательских интерфейсов, поставщик составного устройства должен:

  1. Реализуйте подпрограмму обратного вызова перечисления (USBC_START_DEVICE_CALLBACK).
  2. Укажите указатель на подпрограмму обратного вызова в интерфейсе конфигурации USB-устройства (элемент StartDeviceCallbackUSBC_DEVICE_CONFIGURATION_INTERFACE_V1).
  3. Укажите 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) обеспечивает поддержку устройств, включенных в класс устройств связи (CDC) универсальной последовательной шины (USB) и класс устройств беспроводной мобильной связи USB (WMCDC).

Спецификация USB Wireless Mobile Communication Device Class (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 00. В следующем примере кода из примера INF-файла показано, как задать для EnumeratorClass соответствующее значение.

[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

Значение, которое необходимо назначить EnumeratorClass , создается из трех 1-байтовых двоичных значений, представленных в INF-файле парами шестнадцатеричных цифр: 02, 00 и 00. Эти три числа соответствуют значениям, которые форум разработчиков USB присвоил классу устройств CDC, подклассу устройства CDC и протоколу устройства CDC соответственно.

WmCDC описывается в следующих разделах:

Перечисление коллекций интерфейсов в WMCDC

Класс USB-устройства беспроводной мобильной связи (WMCDC) является подклассом класса USB-устройств связи (CDC). Спецификация WMCDC расширяет, но не существенно изменяет рекомендации CDC по определению коллекций интерфейсов. В частности, устройства WMCDC должны соответствовать рекомендациям CDC по определению коллекций интерфейсов.

Коллекции интерфейсов CDC содержат интерфейс master (USB_INTERFACE_DESCRIPTOR), принадлежащий классу интерфейса связи (bInterfaceClass = 0x02) или классу интерфейса данных (bInterfaceClass = 0x0A). Если интерфейс master относится к классу интерфейса связи (что является типичной ситуацией), подкласс интерфейса master (bInterfaceSubClass) указывает модель управления CDC. Модель элемента управления указывает тип интерфейсов, включенных в коллекцию интерфейсов. Описание моделей элементов управления, определяемых форумом разработчиков USB, см. в спецификации CDC и WMCDC.

За интерфейсом master коллекции интерфейсов следует набор обязательных функциональных дескрипторов класса, включая функциональный дескриптор объединения (UFD). В UFD перечислены номера интерфейсов, принадлежащих коллекции. Поле bMasterInterface UFD содержит номер интерфейса master. Ноль или более полей bSubordinateInterface содержат номера других (подчиненных) интерфейсов в коллекции.

Для большинства типов моделей управления универсальный родительский драйвер USB (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 не создает PDO для интерфейсов 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.

Схема, иллюстрирующая сопоставление коллекции интерфейсов с объектом устройства для CdcFlags = 0x00000000.

Коллекция интерфейсов модели управления беспроводной телефонной связью (WHCM) на предыдущем рисунке содержит три коллекции подчиненных интерфейсов (bSubordinateInterface): две коллекции OBEX и коллекцию модемов. Бит 0 cdcFlags равен 0, поэтому универсальный родительский драйвер USB не создает PDO для коллекции интерфейсов WHCM. Бит 1 cdcFlags равен 0, поэтому универсальный родительский драйвер USB создает отдельное PDO для каждой коллекции интерфейсов OBEX.

На следующем рисунке показана конфигурация PDO, если заданы биты 0 и 1 cdcFlags .

Схема, иллюстрирующая сопоставление коллекции интерфейсов с объектом устройства для CdcFlags = 0x00010001.

Так как бит 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 и показано, как создать PDO для логических телефонов и создать одно 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 для создания отдельных объектов физических устройств (PDO) для коллекций интерфейсов моделей элементов управления OBEX или создания одного PDO для всех коллекций интерфейсов модели управления OBEX.
  • Список номеров интерфейсов в UFD может содержать пробелы. То есть номера интерфейсов UFD могут ссылаться на интерфейсы, которые не являются смежными. Этот тип нумерирования недопустим, например для дескриптора ассоциации интерфейса USB (IAD), интерфейсы которого должны быть смежными и иметь последовательные номера.
  • UFD могут включать связанные коллекции звуковых интерфейсов
  • Идентификаторы оборудования для коллекций интерфейсов CDC и WMCDC должны включать подкласс интерфейса. Другие USB-интерфейсы, идентификаторы оборудования которых содержат суффикс MI_%02X, указывающий номер интерфейса, не содержат сведений о подклассе интерфейса. Сведения о подклассе включаются в идентификатор оборудования, чтобы позволить поставщикам предоставлять INF-файлы с совпадениями идентификаторов оборудования для конкретных коллекций интерфейсов, а не полагаться на положение интерфейса в макете дескриптора, чтобы определить, какой драйвер следует загрузить для коллекции. Сведения о подклассе в идентификаторе оборудования также позволяют постепенно переходить от текущих драйверов, предоставляемых поставщиком, которые управляют коллекциями интерфейсов WMCDC, к альтернативным вариантам, таким как драйверы пользовательского режима. Общие сведения о том, как форматируются аппаратные идентификаторы интерфейсов USB, см. в разделе Идентификаторы для USB-устройств.

Модели управления CDC и WMCDC

В разделе Модели управления CDC и WMCDC описываются свойства коллекций интерфейсов, поддерживаемых в операционных системах Microsoft Windows. Каждое описание включает, среди прочего, список идентификаторов оборудования и устройств, которые создается универсальным родительским драйвером USB для коллекции интерфейсов.

Большинство коллекций интерфейсов, поддерживаемых Windows, соответствуют моделям управления, принадлежащим к классу устройств связи (CDC) и классу беспроводных мобильных устройств связи (WMCDC), но операционная система также поддерживает устаревшие коллекции аудио- и видеоиспытов и коллекцию интерфейсов, определяемую консорциумом по продвижению мобильных вычислений (MCPC).

Ниже перечислены коллекции интерфейсов, описанные в этом разделе.

Интерфейсы класса Audio

Коллекции интерфейсов класса USB Audio Device, которые встречаются на устройствах CDC и WMCDC, имеют следующие свойства.

Свойство Описание
Справка Определение класса устройства универсальной последовательной шины для звуковых устройств версии 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 Wireless Mobile Communication Device Class (WMCDC) содержит расширенное определение ACM.

На этой странице описаны коллекции интерфейсов, соответствующие спецификации WMCDC.

Коллекции интерфейсов, соответствующие спецификации CDC, имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.6.2.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master 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.

Модель управления сетью CDC ATM

Коллекции интерфейсов МОДЕЛИ управления сетью ATM (ANCM) USB CDC имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.8.3
Класс интерфейса master Класс интерфейса связи (0x02)
Подкласс интерфейса master ANCM (0x07)
Протокол Нет (0x00)
Enumerated Да
Связанные интерфейсы Один интерфейс класса данных, на который ссылается функциональный дескриптор объединения (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

Коллекции интерфейсов модели управления COMMON ISDN API (CAPI) USB CDC имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи, версия 1.1, раздел 3.7.2
Класс интерфейса master Класс интерфейса связи (0x02)
Подкласс интерфейса master 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

Коллекции интерфейсов модели прямого управления (DLCM) USB CDC имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.6.1.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master DLCM (0x01).
Протокол Нет (0x00).
Enumerated Да.
Связанные интерфейсы Класс audio или определяемые поставщиком интерфейсы, на которые ссылается функциональный дескриптор объединения (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

Коллекции интерфейсов модели управления сетью (ENCM) USB CDC Ethernet имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи версии 1.1, раздел 3.8.2.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master 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 для управления коллекцией интерфейсов.

Модель управления CDC с несколькими каналами ISDN

Коллекции многоканационных моделей управления ISDN (MCCM) USB CDC имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи, версия 1.1, раздел 3.7.1
Класс интерфейса master Класс интерфейса связи (0x02)
Подкласс интерфейса master 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 (TCM) имеют следующие свойства.

Свойство Описание
Справка Определения классов универсальной последовательной шины для устройств связи, версия 1.1, раздел 3.6.3.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master TCM (0x03).
Протокол Любой.
Enumerated Да.
Связанные интерфейсы Интерфейсы класса audio, на которые ссылается функциональный дескриптор объединения (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 имеют следующие свойства.

Свойство Описание
Справка Спецификация 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
Специальная обработка Нет

Интерфейсы класса Video

Коллекции интерфейсов класса видеоустройств USB, которые происходят на устройствах CDC и WMCDC, имеют следующие свойства.

Свойство Описание
Справка Определение класса устройства универсальной последовательной шины для видеоустройств версии 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 Communication Device (CDC). Спецификация USB Wireless Mobile Communication Device Class (WMCDC) содержит расширенное определение ACM. Коллекции ACM, содержащие функцию факса или модема, должны использовать определение WMCDC ACM, а не исходное определение CDC ACM.

На этой странице описаны коллекции интерфейсов, соответствующие спецификации CDC.

Коллекции интерфейсов, соответствующие спецификации WMCDC, имеют следующие свойства.

Свойство Описание
Справка Спецификация подкласса CDC универсальной последовательной шины для беспроводных мобильных устройств связи, версия 1.0, раздел 6.2.
Класс интерфейса master Класс коммуникационного интерфейса (0x02).
Подкласс интерфейса master 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

Коллекции интерфейсов модели управления устройствами (DMM) USB WMCDC имеют следующие свойства.

Свойство Описание
Справка Спецификация подкласса CDC универсальной последовательной шины для беспроводных мобильных устройств связи, версия 1.0, раздел 6.6.
Класс интерфейса master Класс коммуникационного интерфейса (0x02).
Подкласс интерфейса master 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 mobile direct line

Коллекции интерфейсов МОДЕЛИ MDLM для мобильных устройств USB WMCDC имеют следующие свойства:

Свойство Описание
Справка Спецификация подкласса CDC универсальной последовательной шины для беспроводных устройств мобильной связи, версия 1.0, раздел 6.7
Класс интерфейса master Класс интерфейса связи (0x02)
Подкласс интерфейса master 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 (несколько PDO)

Существует два способа перечисления коллекций интерфейсов модели управления obex: универсальный родительский драйвер USB может сгруппировать все интерфейсы OBEX и создать один объект физического устройства (PDO) для всех интерфейсов OBEX, или родительский драйвер может создать отдельное PDO для каждого интерфейса OBEX.

Когда универсальный родительский драйвер USB назначает отдельные PDO для каждого интерфейса OBEX, PDO имеют следующие свойства.

Свойство Описание
Справка Спецификация подкласса CDC универсальной последовательной шины для беспроводных устройств мобильной связи, версия 1.0, раздел 6.5.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master 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 или нескольких PDO.

Модель управления OBEX WMCDC (одно PDO)

Существует два способа перечисления коллекций интерфейсов модели управления obex: универсальный родительский драйвер USB может сгруппировать все интерфейсы OBEX и создать один объект физического устройства (PDO) для всех интерфейсов OBEX, или родительский драйвер может создать отдельное PDO для каждого интерфейса OBEX.

Когда универсальный родительский драйвер USB назначает одно PDO всем интерфейсам OBEX, PDO имеет следующие свойства.

Свойство Описание
Справка Спецификация подкласса CDC универсальной последовательной шины для беспроводных устройств мобильной связи, версия 1.0, раздел 6.5.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master 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 или нескольких PDO. Описание параметров реестра, определяющих, как универсальный родительский драйвер USB перечисляет интерфейсы OBEX, см. в разделе Перечисление коллекций интерфейсов на составных USB-устройствах.

Модель управления беспроводным телефоном WMCDC

Универсальный родительский драйвер USB не всегда перечисляет коллекции интерфейсов модели управления беспроводными телефонами (WHCM). Параметры реестра, связанные с экземпляром универсального родительского драйвера USB, который управляет коллекцией интерфейсов WHCM, определяют, создает ли универсальный родительский драйвер USB объект физического устройства (PDO) для коллекции интерфейсов. Описание параметров реестра, определяющих, как универсальный родительский драйвер USB перечисляет интерфейсы WHCM, см. в разделе Перечисление коллекций интерфейсов на составных usb-устройствах.

Перечисленные коллекции интерфейсов WHCM имеют следующие свойства.

Свойство Описание
Справка Спецификация подкласса CDC универсальной последовательной шины для беспроводных устройств мобильной связи, версия 1.0, раздел 6.1.
Класс интерфейса master Класс интерфейса связи (0x02).
Подкласс интерфейса master 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) определяет интерфейсы, связанные с логическим телефоном.

Форматы идентификаторов оборудования в предыдущих разделах описывают следующие соглашения:

  • Формат printf языка C представляет целые числа. Например, "%04x" означает 4-значное шестнадцатеричное целое число, "%02x" означает 2-значное шестнадцатеричное целое число и т. д.
  • Целое число, следующее за строкой "Vid_", представляет собой 4-значное шестнадцатеричное представление кода поставщика, который комитет USB (<www.usb.org>) назначает поставщику.
  • Целое число, следующее за строкой "Pid_", представляет собой 4-значное шестнадцатеричное представление кода продукта, назначаемого поставщиком устройству.
  • Целое число, следующее за строкой "Rev_", представляет собой 4-значное шестнадцатеричное представление номера редакции устройства.
  • Целое число, следующее за строкой "Cdc_", является подклассом интерфейса.
  • Целое число, следующее за строкой "Prot_", является номером протокола.
  • Целое число, следующее за строкой "MI_", представляет собой 2-значное шестнадцатеричное представление номера интерфейса, которое извлекается из поля bInterfaceNumber дескриптора интерфейса.

Перечисление коллекций интерфейсов на USB-устройствах с идентификаторами IAD

Если составное USB-устройство имеет дескриптор ассоциации интерфейса (IAD) во встроенном ПО, Windows перечисляет коллекции интерфейсов так, как если бы каждая коллекция была одним устройством, и назначает один объект физического устройства (PDO) каждой коллекции интерфейсов и связывает оборудование и совместимые идентификаторы (ID) с PDO. Подробное описание идентификаторов IAD см. в разделе Дескриптор ассоциации интерфейсов USB. В этом разделе описываются идентификаторы оборудования и совместимые идентификаторы (ID), назначенные коллекциям интерфейсов, связанным с 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-интерфейсов.

В этом разделе описываются аппаратные и совместимые идентификаторы (ID), связанные с 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 в каждой коллекции интерфейсов.