Как различить типы USB-устройств? - PullRequest
3 голосов
/ 05 октября 2011

Прочитав этот вопрос о работе с USB-устройствами, я задался вопросом, какой метод используется операционной системой для различения типов USB-устройств?

Например, я могу подключить USB-мышь, и компьютер «просто знает», что это мышь. Если я подключу свой USB-накопитель емкостью 1 ГБ, он «просто знает», что это 1 ГБ съемной памяти.

Какой код используется устройством для «объявления», что это за тип? Или операционная система опрашивает устройство и получает какой-то стандартизированный ответ?

Как мне запрограммировать устройство, чтобы оно идентифицировало себя, скажем, как клавиатуру?

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

Чтобы построить устройство, которое работает через USB, вам почти наверняка придется прочитать спецификацию USB, доступную по http://www.usb.org/developers/docs/

Что касается вашего конкретного вопроса, существуют методы GET, связанные с различными стандартами.Переменные USB.Они хранятся в прошивке устройства и предоставляются по запросу.Например, GET_DESCRIPTOR, GET_STATUS и т. Д. Являются типами запросов, которые могут быть отправлены на устройство.

USB имеет свой собственный набор протоколов, который будет довольно сложной задачей для реализации в полном объеме, поэтому большинство производителей устройств покупают контроллер USBЧип от какой-то третьей стороны.

Если вы просто заинтересованы во взломе чего-то вместе, то я думаю, что спецификации будет достаточно, чтобы вы отправили несколько пакетов.

Единственный другой вариант, который яможет думать не может быть подходящим для вашего проекта;подключите проводную клавиатуру к реальной клавиатуре, позвольте клавиатуре выполнить все сложные разрешения адресов и идентификацию устройства и т. д., а затем просто заставьте ваше устройство передавать данные по проводам, как и когда.

Это то, чем я управлял раньше, когда ясоздайте черный ящик клавиатуры для прослушивания пароля в старшей школе, черный ящик сохранил нажатия клавиш, а затем срыгнул их на провода, как если бы это была клавиатура.После того, как он сохранил несколько паролей, и я получил его, мне пришлось подключить его к клавиатуре, а затем отключить клавиатуру, прежде чем настраивать ее для вывода нажатий клавиш (с открытым окном удобного gedit: P), иначе клавиатура прервется.передача с собственными данными.

1 голос
/ 05 октября 2011

Тип (или, скорее, класс устройства) определяется путем чтения класса устройства из дескрипторов устройства и интерфейса устройства. Вы можете прочитать этот сегмент о дескрипторах USB-устройства из USB в двух словах для получения информации. (Я также рекомендую прочитать все это, если вам интересно)

0 голосов
/ 05 октября 2011

В диспетчере устройств откройте свойства устройства и выберите вкладку «Сведения». Различные значения дают информацию (или, скорее, генерируются из информации от устройства и его драйвера).

...