因为我是一个好奇的人,所以我搜索了有关 USB 的信息,主要是如何在自己的项目中使用 USB。
我找到了 LibUSB,这是一个可以让你实现这一点的库和驱动程序。但它让我有点困惑。
我预计 Windows 有一个默认的 USB 内核驱动程序,它可以管理所有 USB 功能。例如,如果您想要将数据发送到某个端点,您只需调用某个 winAPI 函数,然后向其发送设备的 PID VID 对以及有关要发送哪些数据以及发送到哪个端点的信息。
但在深入研究了 LibUSB 之后,你会发现它还有另一个驱动程序需要你先安装。所以,从我这个初学者的角度来看,你现在有 2 个驱动程序,一个 USB HW 驱动程序和一个 LibUSB 驱动程序。所以,我的问题是为什么你需要第二个驱动程序?谢谢。
答案1
USB 总线与 PCI 总线不同;USB 控制器不是直接访问的,而是通过 PCI 总线访问的。因此,USB 控制器本身需要一个驱动程序,并且您需要一个软件堆栈来管理所有这些层(硬件 <-> PCI 总线 <-> USB 控制器(作为 PCI 设备)<-> USB 总线 <-> USB 设备 <-> 应用程序)