Это очень постоянный вопрос на форумах и программировании сайтов Q + A. Никогда со счастливым концом. B в USB означает шину. Это термин в конструкции компьютерного оборудования для описания электрического интерфейса для электронных устройств для обмена данными. Он играет ту же роль, что и, скажем, шина PCI (экспресс) внутри вашей машины. Поскольку это в первую очередь электрическая спецификация, USB поддерживает очень большое количество типов устройств. Все, от адаптера беспроводной сети, модема, карты флэш-памяти до чайника с подогревом. Почти единственные виды устройств, с которыми он плохо справляется, это устройства, требующие очень большой полосы пропускания, такие как видеоадаптер.
Спецификация USB имеет очень элегантную спецификацию протокола, которая описывает, как устройства могут совместно использовать шину и как они могут обмениваться данными. Эта спецификация протокола, однако, вообще не описывает формат данных, а просто определяет возможность доставки кусков байтов. Именно само устройство может придать смысл этим байтам.
На стороне машины вам нужно программное обеспечение, чтобы интерпретировать эти байты и заставить машину делать с ними что-то интересное. Это требует драйвера устройства. Так же, как вашей видеокарте и сетевой карте требуется драйвер устройства. Очевидно, что драйвер видеокарты очень отличается от драйвера NIC. То же самое верно для драйверов USB, здесь мало общего.
Если вы хотите написать программное обеспечение, которое обрабатывает USB-устройства аналогично, вам нужно написать это на уровне, где у них все еще есть что-то общее. Это на уровне контроллера USB, вы можете написать драйвер фильтра, который внедряется в стек драйверов USB и просматривает пакеты запроса ввода-вывода между контроллером и драйвером устройства. Аналогично, скажем, драйверу фильтра winpcap, который следит за трафиком TCP / IP. Хотя там не так много интересного, вы бы смотрели на капли байтов, которые идут туда-сюда. Это гораздо большая проблема, чем winpcap, по крайней мере, он видит, как летят байты, чье значение задокументировано где-то в RFC. Это не относится к USB, компания, которая производит USB-устройства, также обычно является поставщиком драйверов устройств. Они хранят внутренний формат без документов.
Написание фильтров-фильтров требует довольно продвинутых навыков, есть много болевых точек. Как сбой операционной системы, когда вы делаете простую ошибку. В последнее время в модели драйверов Windows также наблюдается значительный поток изменений, драйверы USB переводятся в кольцо 3 (пользовательский режим) для поддержания стабильности операционной системы.
Для начала загрузите Windows WDK (он же «DDK») и прочитайте книги Уолтера Онея. Желательно все из них.