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


Стандартные USB-идентификаторы

Набор идентификаторов, созданных для USB-устройств, зависит от того, является ли устройство одним интерфейсом или устройством с несколькими интерфейсами.

USB-устройства с одним интерфейсом

При подключении нового USB-устройства драйвер USB-концентратора создает следующий идентификатор устройства, используя сведения, извлеченные из дескриптора устройства устройства:

USB\VID_v(4)&PID_d(4)&REV_r(4)

Где:

Драйвер концентратора извлекает коды поставщиков и продуктов из полей idVendor, idProduct и bcdDevice дескриптора устройства соответственно. Эти коды представляют собой шестнадцатеричные числа с четырьмя цифрами.

Раздел модели INF также может указать следующий идентификатор оборудования:

USB\VID_v(4)&PID_d(4)

И следующие совместимые идентификаторы:

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) — это код протокола.

Поля bDeviceClass, bDeviceSubClass и bDeviceProtocol дескриптора устройства определяют код класса устройства, код подкласса и код протокола соответственно. Эти коды являются двузначными шестнадцатеричными числами.

USB-устройства с несколькими интерфейсами

Устройства с несколькими интерфейсами называются составными устройствами. При подключении нового составного USB-устройства к компьютеру Windows драйвер USB-концентратора создает объект физического устройства (PDO) и уведомляет операционную систему об обновлении списка дочерних устройств. После того как Windows запрашивает драйвер концентратора для идентификаторов оборудования, связанных с новым PDO, он выполняет поиск соответствующих INF-файлов, чтобы найти соответствие идентификаторов. Если он находит совпадение, отличное от USB\COMPOSITE, он загружает драйвер, указанный в INF-файле. Однако если другое совпадение не найдено, операционная система использует совместимый идентификатор USB\COMPOSITE, для которого загружается универсальный родительский драйвер USB. Затем универсальный родительский драйвер создает отдельный PDO и создает отдельный набор идентификаторов оборудования для каждого интерфейса составного устройства.

Каждый интерфейс имеет идентификатор устройства следующей формы:

USB\VID_v(4)&PID_d(4)&MI_z(2)

Где:

Раздел модели INF также может указать следующие совместимые идентификаторы:

USB\CLASS_d(2)&SUBCLASS_s(2)&PROT_p(2)

USB\CLASS_d(2)&SUBCLASS_s(2)

USB\CLASS_d(2)

USB\COMPOSITE

Где:

  • d(2) — это код класса устройства, взятый из дескриптора устройства.
  • S(2) — это код подкласса.
  • p(2) — это код протокола.

Поля bInterfaceClass, bInterfaceSubClass и bInterfaceProtocol дескриптора интерфейса определяют код класса устройства, код подкласса и код протокола соответственно. Эти коды являются двузначными шестнадцатеричными числами.