It occurred to me that I don't actually understand the difference between native port drivers (that is, the native serial/parallel/USB/etc. drivers on each OS) vs. external hardware-specific device drivers.
For instance, if my OS already has a USB driver on it (for communicating with USB devices over the USB interface/port), then why does my shiny new webcam (or printer) come with its own device driver?
Is it that the "port/interface drivers" deal with setting up the electrical connections with external/peripheral devices, and that device drivers use those drivers to give specific I/O commands to the devices? So maybe something like:
Am I correct here or way off base? In other words, in the scenario above, are there actually two drivers being used (one for the device and one for the USB port)?
- If so, then what is the division of labor between the two drivers?
- Else, then why do most OSes have native port drivers (serial, USB, etc.), and why do things like keyboard, mice, webcams, printers, etc. have their own device drivers?