Eject U盘底层解析

Eject U盘底层解析

1、插上U 盘

OS 会发送SCSI PREVENT ALLOW MEDIUM REMOVAL
将设置成 Volume removal shall be prevented。
Eject U盘底层解析

目的是告诉U盘, 我不同意remove 你就不可以remove。这里有人可能要奇怪了,U盘怎么会自己去remove 呢? 实际上,这个SCSI 是由OS 发下来的, 而不是由U盘的driver 发下来的,这个SCSI是OS为了防止driver 自行remove U盘而设计的。

格式如下:
Eject U盘底层解析需要关注的是PREVENT 的值, 它决定是否允许 remove U盘。
Eject U盘底层解析
2、 Eject U盘

这个过程实际上分为两步:

1) OS发送SCSI PREVENT ALLOW MEDIUM REMOVAL
将设置成 Volume removal shall be allowed。

2) U盘driver 发送SCSI LOAD UNLOAD 来移除U盘。

Eject U盘底层解析
LOAD UNLOAD command 的格式如下:
Eject U盘底层解析