Windows – Why does Windows not show an “eject” option for some USB storage devices


In Windows, you can normally "eject" a USB storage device before physically unplugging it to avoid data corruption.

However, for some devices Windows does not provide an "eject" option. I've seen this most frequently with some smart phones.

Why is this?

Best Answer

Probably because the method that is used to transfer files to phones (MTP rather than USB Mass Storage) puts the onus of data and filesystem integrity on the device receiving the data, which in the case of mobile phones also is presumed to be smart and self-powered or have battery back up.

USB mass storage devices are usually dumb memory sticks or hard drives, MTP devices such as phones, cameras and similar are generally reasonably smart devices which handle their storage personally. As such the file transfer can happen in a peer-to-peer ideology rather than a smart-host-dumb-client one. Once the data is "sent" to the phone it is up to the phone operating system and filesystem methods to ensure correct storage of the file.

If the file transfer is interrupted and thus partially transferred then the phone can decide whether to free up any allocated space or show what was transferred on a case-by-case basis. I suspect most interrupted transfers will simply drop incomplete data and free any allocated blocks. Filesystem integrity is actively managed by the phone.

As such a transfer either happens or it does not and doing a software eject is unnecessary, the only reason to have it is so that the person using the computer can get that "I'm done" warm glowy feeling. USB certainly doesn't need it from a hardware perspective and is quite happy with hotplugging devices.

From the MTP Wikipedia page:

A main reason for using MTP rather than, for example, the USB mass-storage device class (MSC) is that the latter operates at the granularity of a mass storage device block (usually in practice, a FAT block), rather than at the logical file level. In other words, the USB mass storage class is designed to give a host computer undifferentiated access to bulk mass storage, such as compact flash, rather than to a file system, which might be safely shared with the target device (except for specific files which the host might be modifying/accessing). In practice, therefore, when a USB host computer has mounted an MSC partition, it assumes absolute control of the storage, which then may not be safely modified by the device without risk of data corruption until the host computer has severed the connection. Furthermore, because the host computer has full control over the connected storage device, there is a risk that the host computer may corrupt the file system, reformat it to a file system not supported by the USB device, or otherwise modify it in such a way that the USB device cannot completely understand it.