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