Как реализовать драйвер USB-устройства для Windows?

Как мне подойти к внедрению драйвера USB-устройства для Windows? Как следует учитывать различные версии окон, например:  - Windows XP  - Виндоус виста  - Windows 7

Существуют ли решения с открытым исходным кодом, которые можно использовать в качестве отправной точки? Я новичок в разработке драйверов Windows.

У нас есть встроенное устройство с портом USB-устройства, и мы хотели бы иметь как можно более низкую задержку связи с уровня приложения на устройстве, не жертвуя пропускной способностью данных. Фактические данные передаются данными АЦП/ЦАП. В основном есть много данных, которые нам нужно как можно быстрее перенести на компьютер Windows.

Ответ 1

Нам нужно больше информации о том, чтобы устройство указывало вам в правильном направлении, но вот несколько шагов, которые помогут вам начать:

  • зарегистрируйтесь в Microsoft Connect, чтобы вы могли загрузить комплект драйверов Windows
  • зарегистрируйтесь в osr-online, поскольку вы найдете отличные статьи, большое количество информации и группу новостей, ориентированную только на драйверы Windows - это место - золотой рудник
  • купить Разработка драйверов с WDF, что поможет вам разобраться в разработке драйверов в Windows и даст вам хорошую основу для чтения статей из OSR и Microsoft
  • Надеюсь, что вы можете использовать UMDF (драйверы пользовательского режима), поскольку вы можете использовать С++ и просто писать COM-код. Если вы делаете что-либо с USB, требующим пространства ядра... у вас есть много возможностей читать и учиться на следующий год!

Чтобы ответить на ваш вопрос о версиях, в Driver Kit есть инструменты, которые помогут вам управлять созданием разных драйверов. Если вы пишете хороший драйвер, он должен работать на всех трех ОС без проблем, а различия будут только в области конфигурации (а не в двоичном формате)

В принципе, это зависит от того, насколько сложным является ваше устройство. Какой тип драйвера вы пытаетесь написать? Файловая система? Мп3-плеер? Камера? Модем?

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

Я также должен добавить, что примерно за 5000 долларов США вы можете купить лицензию на WinDriver, инструмент, который принимает все жесткие от разработки драйверов. Вы можете использовать код режима пользователя С++ или С# для связи со своим драйвером, который настраивается для вашего устройства. Это путь, если у вас ограниченный срок.

Ответ 2

Вы можете взглянуть на вариант Windows libusb * здесь *. Существуют обертки для многих языков программирования на официальном сайте libusb и в Интернете.

Ответ 4

Если у вас есть какая-то форма контроля над устройством, попробуйте реализовать интерфейс, для которого Windows уже предоставляет драйверы. Например. класс USB HID (буквально Human Input Device, но ни человек, ни вход не является обязательным) уже имеют драйверы Windows, и на нем есть разумный API Win32. Тем не менее, вы не будете получать скорости передачи данных примерно в 480 Мбит/с.