首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >USBDEVFS_RESET vs IOCTL_USB_RESET

USBDEVFS_RESET vs IOCTL_USB_RESET
EN

Stack Overflow用户
提问于 2015-05-25 19:11:15
回答 1查看 6.4K关注 0票数 19

我似乎纠结于USB堆栈上的不同抽象。对USB设备执行IOCTL_USB_RESETUSBDEVFS_RESET有什么不同?这两个调用最终是否会在接口上触发相同的低级操作,或者是否存在差异?

我注意到USBDEVFS_RESET有时被描述为“相当于重新插入和重新枚举设备”,而我自己发现触发IOCTL_USB_RESET (通过libusb的usb_reset()调用完成)确实会在dmesg中触发一个重置消息,但没有新的‘枚举’,我猜这会导致常见的多行USB检测和识别消息。

由于IOCTL_USB_RESET不可能解决我的问题(卡住usb设备),甚至不会触发重新枚举,USBDEVFS_RESET有没有可能做得更好?

EN

回答 1

Stack Overflow用户

发布于 2018-03-24 00:29:06

我觉得你说的是IOCTL_USBFS_RESET而不是IOCTL_USB_RESET

IOCTL_USBFS_RESETlibusb特有的。实际上,libusb不使用usbdevice_fs.h中定义的结构或ioctls。相反,它重新定义了os/linux_usbfs.h中的一切(我认为是由于历史原因)。这两个头文件是二进制兼容的,但是libusb对结构和ioctls不使用相同的名称。对于结构,前缀usbdevfs_替换为usbfs_ (usbfs_ctrltransferusbfs_bulktransfer,...)。对于ioctls,IOCTL_USBFS_替换了前缀USBDEVFS_

因此,实际上,IOCTL_USBFS_RESETUSBDEVFS_RESET (= _IO('U', 20))是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30437015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档