为什么使用libusb需要卸载内核驱动程序?为什么不可能与内核驱动一起执行一些USB IO?为什么使用libusb需要卸载内核驱动程序?
2
A
回答
1
主要是为了避免混淆USB设备的状态。每个界面在任何时候只能有一个“用户”。
许多USB设备可以进入不同的执行域,缓存状态,DMA传输等。这些类型的设备将在驱动程序中具有状态机跟踪器,并且很容易失去同步或其他类型冲突。并非所有设备都是简单的HID接口(可通过其他API的btw操作)
0
为了进行通信,每个USB设备都有端点。这些端点就像管道一样,在这些管道中所有的数据都在流失。
一个端点只有一个方向,只能由1个驱动程序使用。
因此,您需要分离内核驱动程序才能使这些端点可用。
如果您希望您始终能够检测和禁用使用该设备的驱动程序,以避免使用分离式内核驱动程序。
相关问题
- 1. 如何从内部卸载Windows内核模式驱动程序?
- 2. 什么是Windows内核驱动程序?
- 3. 当我们有内核时,为什么我们需要驱动程序?
- 4. 如何检查内核驱动程序是否附有libusb-0.1?
- 5. 卸载OpenKinect驱动程序?
- 6. 卸载Windows驱动程序
- 7. 作用卸载驱动程序(了bnx2i)
- 8. 需要Linux内核驱动程序定义的ioctl
- 9. 为什么JDBC-ODBC需要驱动程序?
- 10. 为什么Linux驱动程序需要编译?
- 11. 为什么Linux不需要驱动程序
- 12. 为什么我们需要一个数据库驱动程序?
- 13. 为什么JDBC驱动程序不需要H2
- 14. 驱动程序开发:卸载Windows驱动程序
- 15. 内核驱动程序或用户空间驱动程序?
- 16. 为什么MySql.NET驱动程序需要.NET 2.0应用程序的.NET 2.0
- 17. 为什么我们需要下载浏览器(IE,Chrome)驱动程序
- 18. 为什么需要在驱动程序初始化时加载蓝牙固件?
- 19. 为什么在iOS上升级时需要卸载Trigger.IO应用程序?
- 20. 字符驱动程序卸载失败
- 21. 卸载PCI设备驱动程序
- 22. (C/Windows)无法卸载驱动程序
- 23. Windows驱动程序卸载挂起
- 24. Linux内核:获取函数地址为内核驱动程序
- 25. 我需要为Nexus 6p下载什么内核?
- 26. libUSB/WinUSB到WinDDK驱动程序端口
- 27. 将Linux驱动程序转换为可加载内核模块
- 28. 使用C#编程安装/卸载.inf驱动程序.net
- 29. 为什么建立和使用内核模块需要depmod?
- 30. 什么是Linux内置驱动程序加载顺序?
我首先想到了一个真正的全局linux限制。鉴于这是避免绕过内核驱动程序和引入问题的预防措施,我能够使用用户空间的usb linux ioctls https://www.kernel.org/doc/htmldocs/usb/usbfs-ioctl.html以及内核驱动程序,确保它不会干扰它(它是使用ftdi_sio内核驱动程序的FTDI USB /串行转换器设备)。分离内核驱动程序的缺点是它会创建udev事件,这会导致我的情况出现问题(我倾听它们,并且我不希望某个设备在使用时消失)。 –