- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我似乎在 USB 堆栈上的不同抽象之间纠结。IOCTL_USB_RESET
和 USBDEVFS_RESET
对 USB 设备触发有什么区别?这两个调用最终会在界面上触发相同的低级别操作,还是有区别?
我注意到 USBDEVFS_RESET
有时被描述为“相当于重新插入和重新枚举设备”,而我自己发现触发 IOCTL_USB_RESET
(正如 libusb 的 usb_reset()
调用)确实触发了 dmesg
中的重置消息,但没有新的“枚举”,我猜这会导致通常的多行 USB 检测和识别消息。
由于 IOCTL_USB_RESET
无法解决我的问题(卡住 USB 设备),甚至不会触发重新枚举,USBDEVFS_RESET
是否有机会做得更好?
最佳答案
我认为您谈论的是 IOCTL_USBFS_RESET
而不是 IOCTL_USB_RESET
?
IOCTL_USBFS_RESET
特定于 libusb
。实际上,libusb
不使用 usbdevice_fs.h
中定义的结构或 ioctl。相反,它重新定义了 os/linux_usbfs.h
中的所有内容(我认为是出于历史原因)。这两个 header 是二进制兼容的,但是 libusb
不对结构和 ioctls 使用相同的名称。对于结构,前缀 usbdevfs_
替换为 usbfs_
(usbfs_ctrltransfer
、usbfs_bulktransfer
、...)。对于 ioctls,前缀 USBDEVFS_
替换为 IOCTL_USBFS_
。
所以,确实,IOCTL_USBFS_RESET
与 USBDEVFS_RESET
(= _IO('U', 20)
) 相同。
关于linux - USBDEVFS_RESET 与 IOCTL_USB_RESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30437015/
我似乎在 USB 堆栈上的不同抽象之间纠结。IOCTL_USB_RESET 和 USBDEVFS_RESET 对 USB 设备触发有什么区别?这两个调用最终会在界面上触发相同的低级别操作,还是有区别?
我是一名优秀的程序员,十分优秀!