Как доказать, что USB-устройство может только вводить данные?

298
sscirrus

Я пытаюсь понять, как определяются устройства HID и Composite.

Как узнать (со стороны ОС), что недавно подключенное USB-устройство может только вводить данные (и не может подключаться как жесткий диск, запускать исполняемый файл или что-то еще)?

Далее следует следующее: если ответ заключается в том, что подключенное USB-устройство должно быть HID, то может ли это HID состоять из комбинации клавиатура / мышь, например клавиатуры со встроенным трекпадом?

2
Вы спрашиваете о том, как устройство идентифицируется в операционной системе, или о фактической природе устройства? По определению, любое устройство USB, состоящее из нескольких логических подустройств, всегда является составным устройством USB. Twisty Impersonator 6 лет назад 2
Я спрашиваю о том, как он идентифицируется в ОС - по сути, меня интересует, как узнать (со стороны ОС), что недавно подключенное USB-устройство может только вводить данные и ничего не может делать (например, подключать как жесткий диск). диск, запуск исполняемого файла или что-то). sscirrus 6 лет назад 0

1 ответ на вопрос

2
AlphaComp

Вопрос не так "Cut 'n' Shut", как это. Идентификация через usb намного больше, чем «одна мышь, один кабель = HID против одной мыши, одна клавиатура, один кабель = композитный».

Например, одиночная клавиатура может быть HID и / или композитным USB-устройством, если у вас когда-либо была клавиатура «Gamer» со встроенными макросами и подсветкой, а также собственное хранилище для сохранения этих макросов для путешествий, то есть составное устройство, потому что оно включает в себя несколько устройств в одной шине.

В противоположность этому, клавиатура Logitech с беспроводной мышью может быть просто устройством HID, потому что это единственный присутствующий класс, хотя может быть два устройства, оба они являются только HID.

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

Источник: USB композитное устройство

И затем есть пункт о том, как Windows видит устройство.

Когда новое USB-устройство подключено к хост-машине, драйвер шины USB создает объект физического устройства (PDO) для устройства и генерирует событие PnP, чтобы сообщить о новом PDO. Затем операционная система запрашивает драйвер шины для идентификаторов оборудования, связанных с PDO.

Драйвер шины также проверяет поля класса устройства (bDeviceClass), подкласса (bDeviceSubClass) и протокола (bDeviceProtocol) дескриптора устройства. Если эти поля равны нулю, устройство является составным устройством, и драйвер шины сообщает о дополнительном совместимом идентификаторе (ID) USB \ COMPOSITE для PDO.

Источник: Перечень USB-композитных устройств

Я надеюсь, что это помогло вам понять немного больше по теме.

Это отличный пост, но в нем пропущен конкретный вопрос, который я задал. Если у меня есть комбинация клавиатура / мышь на одном устройстве USB, может ли это устройство классифицировать себя так, чтобы операционная система компьютера распознала его как HID? sscirrus 6 лет назад 0
По рекомендации @TwistyImpersonator я расширил вопрос, чтобы сосредоточиться на проблеме, а не на попытках ее решения. sscirrus 6 лет назад 0