linux 弹出usb设备,在Linux中检测USB大容量存储弹出/卸载

我也遇到了这个问题。

我的嵌入式USB只读大容量存储项目监视来自主机的SCSI命令。使用Mac OS X(10.5):在插件上,OS X驱动程序很好地告诉设备防止删除介质(SCSI命令PREVENT / ALLOW MEDIUM REMOVAL)。我的设备接受此命令。稍后,当用户发出应该弹出设备的信号时,OS X再次非常好地再次使用ALLOW标志发送PREVENT / ALLOW REMOVAL,然后发送SCSI START / STOP指示停止(或弹出,不记得)。美丽。

但是,Windows XP似乎只是停止发送SCSI命令TEST UNIT READY。我看过; “安全移除硬件”不发送任何SCSI信号,它只会导致TEST UNIT READY信号停止,它每隔一秒左右就会进行一次。基本上Windows只是蛤蜊。

测试单元READY超时可能适用于Windows,但它是一种检测设备停止条件的糟糕方法。此外,它不适用于OS X,因为OS X不像Windows那样每秒都在ping我的设备;我会得到误报。

更新于2009年11月15日

Sondergaard在这里报道回来。

很大程度上取决于设备对USB Mass-Storage-Class SCSI“查询”命令的响应是否自我识别为“可移动”或“固定”。

如果标志显示可移动,我可以判断Windows XP用户是否“停止”我的设备的唯一方法是每秒测试单元就绪命令退出。如果该标志没有说可移动,则没有常规的测试单元就绪命令流。 USB暂停也无法计算,在大约1/4的测试中,“安全删除”没有发送USB暂停。不知道为什么它不一致。因此,如果你想确定,我可以提出的与WINDOWS XP兼容的最佳建议是将INQUIRY作为“可移动”响应,查找常规的TEST UNIT READY命令,然后当它们停止时认为自己被安全删除。

OS X(10.6)是另一回事。正如我上面所写,它更有礼貌。它发送SCSI START / STOP以启动或关闭设备,有时它们都是独立的而没有用户输入。但这意味着如果您将STOP解释为说用户已经通过,并且以您设备内部的任何丑陋方式断开连接,OS X在尝试再次旋转磁盘时可能会非常困惑。如果您的设备被标记为可移动,OS X将在STOP之前发送ALLOW REMOVAL命令(或者在这种情况下是EJECT),这将是一个非常好的信号。

我没有详尽地尝试不同的配置。我的应用程序是只读的,带有两个分区,并且必须标识为NON可移动,因为Windows XP拒绝为可移动USB驱动器确认多个分区(OS X无论哪种方式都没有问题)。所以我的大部分测试都在这个配置中。

希望这可以帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值