在实际操作中,感觉安全删除就是让系统停止对usb 设备供电,并移除。而弹出只是不能进行数据写入了,但是还有看到盘符。请问大家有什么标注的说法吗?如果一个usb设备(像mp3)只做弹出动作,然后拔掉,这样会影响设备或者数据的稳定性吗?google半天没找到,求解。

解决方案 »

  1.   

    Eject,在不停止USB设备的同时,停止对存储设备的读写。此时不产生读写操作,对FLASH等应该没有影响。
    对于一些内置式的USB设备,Eject是较好的选择。
      

  2.   

    好象没有什么标准的说法,不过抓了下包,两者还是有很大区别安全删除 : 确实很安全, QUERY REMOVE DEVICE -> CLOSE -> REMOVE DEVICE 查询设备是否可以删除,然后关闭设备弹出:  只关闭设备,不删除, FLUSH QUENEN -> CLOSE  ,最后再点击删除,也会执行QUERY REMOVE DEVICE -> CLOSE -> REMOVE DEVICE 也很安全不过如果直接拔出设备,CLOSE -> SURPRISE REMOVAL  可疑性拔出,处理流程和上面正常不一样从上面可以看出,先弹出,在直接拔出,应该问题不大,因为在拔出之前设备已经处理了数据流并关闭
      

  3.   

    Remove是卸载设备,相当于把磁盘驱动器卸掉。
    Eject是弹出介质,相当于从驱动器中把盘拿走。
      

  4.   

    谢谢,你说的我也知道,关键在于如果是u盘之类比较容易做出选择,如果是mp3之类,在写入数据后,我用Eject 这样会不会影响到设备安全和数据完整性?我个人认为除了PC端程序外,固件(firmware)对Eject动作的反应也有影响。不知道我说的对不对,请赐教。
      

  5.   


    没有问题啊,eject会进行flush,以及close设备,此后设备就安全了
      

  6.   


    多谢,多谢。 因为我写了个MFC,最后有个Eject的动作,不过同事说这样不安全,让我再Eject 后面再写个Safely remove 动作,我就在考虑是不是有个这个必要。
      

  7.   


    不停止USB设备的同时,停止对存储设备的读写。此时不产生读写操作,对FLASH等应该没有影响。 
    对于一些内置式的USB设备,Eject是较好的选择
    QUERY REMOVE DEVICE -> CLOSE -> REMOVE DEVICE 查询设备是否可以删除,然后关闭设备
    弹出:只关闭设备,不删除, FLUSH QUENEN -> CLOSE  ,最后再点击删除,也会执行QUERY REMOVE DEVICE -> CLOSE -> REMOVE DEVICE 也很安全 
      

  8.   

    如果你的设备是个scsi设备,那么删除时盘符没有了,如果是弹出,盘符还在,但是点击时会提示请插入光盘。
      

  9.   

    再Eject 后面再写个Safely remove 动作其实这么做更确保安全啊多一点也不妨啊
      

  10.   


    这个跟微软的关系不大,微软只是制订了usb插拔通信的时序,诸如QUERY REMOVE DEVICE -> CLOSE -> REMOVE DEVICE 之类但是具体每个IRP或SRB里面怎么实现,是硬件厂商的事,需要考虑固件和驱动程序
      

  11.   

    也在为Eject是否丢失数据担心,多谢各位赫赫