Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

since I am curious person, a searched for information about USB, mainly how to be able to use USB in your own projects.

I came to LibUSB, which is a library and driver that enables you to do so. But it made me a bit confused.

I expected that Windows has a default USB kernel driver, which administers all USB functionality. And if you would want, for example, to send data to some endpoint, you would just call some winAPI function, and send it the PID VID pair of the device and information about what data to send and to what enpoint.

But after looking a bit deeper into LibUSB, it has another driver you have to install first. So, from my beginner point of view you have 2 drivers now, one USB HW driver, and one driver for LibUSB. So, my question is why do you need the second driver? Thanks.

share|improve this question
up vote 2 down vote accepted

The USB bus is not like PCI buses; USB controllers are not directly accessed but accessed through the PCI bus. Thus, the USB controller itself needs a driver, and you need a software stack to manage all those layers (hardware <-> PCI bus <-> USB controller(as PCI device) <-> USB bus <-> USB device <-> application)

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .