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


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

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

Single-Interface USB-устройства

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

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

Где:

Драйвер концентратора извлекает коды поставщика и продукта из полей idVendor, idProduct и bcdDeviceдескриптора устройства соответственно. Это 4-значные шестнадцатеричные числа.

В разделе 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дескриптора устройства соответственно. Это 2-значные шестнадцатеричные числа.

Multiple-Interface USB-устройства

Устройства с несколькими интерфейсами называются составными устройствами. Начиная с Windows 2000 при подключении нового составного USB-устройства к компьютеру драйвер концентратора USB создает объект физического устройства (PDO) и уведомляет операционную систему об изменении набора дочерних устройств. После запроса у драйвера концентратора идентификаторов оборудования, связанных с новым PDO, операционная система выполняет поиск соответствующих INF-файлов, чтобы найти совпадение идентификаторов. Если обнаруживается совпадение, отличное от USB\COMPOSITE, загружается драйвер, указанный в INF-файле. Однако если другое совпадение не найдено, операционная система использует совместимый идентификатор USB\COMPOSITE, для которого загружается драйвер УНИВЕРСАЛЬНОго родителя USB. Затем драйвер Generic Parent создает отдельное 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дескриптора интерфейса соответственно. Это 2-значные шестнадцатеричные числа.