Як довести, що USB-пристрій може вводити тільки дані?


2

Я намагаюся зрозуміти, як визначаються пристрої HID та Composite.

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

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


2
Ви запитуєте про те, як ідентифікується пристрій в ОС, чи фактичний характер пристрою? За визначенням, будь-який USB-пристрій, що складається з декількох логічних підрозділів, завжди є композитним USB-пристроєм.
Twisty Impersonator

Я запитую про те, як це ідентифікується в ОС - по суті, мені цікаво, як знати (з боку ОС), що нещодавно підключений USB-пристрій може лише вводити дані і нічого іншого не може робити (наприклад, як приєднання як жорсткий диск, запускається виконуваний файл чи інше).
sscirrus

Відповіді:


2

Питання не так "Cut 'n' Shut", як таке. У ідентифікації usb є набагато більше, ніж "одна миша, один кабель = HID VS одна миша, одна клавіатура, один кабель = композитний".

Наприклад, одинока клавіатура може бути або HID та / або комбінованим USB-пристроєм, якщо у вас коли-небудь була клавіатура "Gamer" із вбудованими макросами та освітленням, і це власне сховище для збереження цих макросів для подорожей, тобто композитний пристрій, тому що він включає в себе кілька пристроїв в одній шині.

У протилежній точці комбінація бездротової клавіатури миші Logitech може бути лише пристроєм HID, оскільки це єдиний клас присутніх, хоча може бути два пристрої, вони обидва лише HID.

USB-композитний пристрій - це периферійний пристрій, який підтримує більше одного класу пристроїв. Багато різних пристроїв реалізовані як композитні пристрої. Наприклад, вони складаються з певного класу пристроїв, а також USB-диска, на якому зберігаються всі необхідні драйвери, щоб пристрій можна було встановити автоматично, без необхідності мати доступ до певного програмного забезпечення драйвера.

Джерело: USB-композитний пристрій

І тоді є сенс про те, як Windows бачить пристрій.

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

Драйвер шини також перевіряє поля класу пристроїв (bDeviceClass), підкласу (bDeviceSubClass) та протоколу (bDeviceProtocol) полів дескриптора пристрою. Якщо ці поля дорівнюють нулю, пристрій є складовим пристроєм, і драйвер шини повідомляє про додатковий сумісний ідентифікатор (ідентифікатор) USB \ COMPOSITE для PDO.

Джерело: Перерахування USB-композитних пристроїв

Я сподіваюся, що це допомогло вам трохи зрозуміти цю тему.


Це чудовий пост, але він не вистачає конкретного запитання, яке я задав. Якщо у мене в одному пристрої USB клавіатура / миша, чи може цей пристрій класифікувати себе таким чином, що ОС комп'ютера розпізнає його як HID?
sscirrus

За рекомендацією @TwistyImpersonator я розширив питання, щоб зосередитись на проблемі, а не на спробі вирішення.
sscirrus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.