操作系统如何检测连接的USB硬盘
操作系统是怎么发现外部硬盘的呢?也就是说,它是通过什么步骤或者系统调用来了解硬盘的情况的?有没有什么方法可以自动判断外部硬盘是否已经连接上呢?
1 个回答
4
(回答你问题中的唯一问题。)
在Windows系统中,你需要创建一个窗口,并处理一个叫做WM_DEVICECHANGE的消息,特别是DBT_DEVICEARRIVAL
事件(这个事件会自动发送,不需要你去注册)。
如果你想用Python来实现这个功能,但又不想创建窗口,按照我所知道的,最好的办法就是定期检查根路径是否存在(每秒检查一次就差不多了,如果你需要更快的响应,Python可能就不适合你了):
import os.path
for letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
drive_mounted[letter] = os.path.exists(letter + ":")
(回答你问题中的非问题部分。)
操作系统能够检测到USB或eSATA设备,是因为主板上的USB/eSATA控制器会向CPU发送一个中断信号。操作系统会检测到这个中断,并询问控制器有关设备的信息,安装必要的驱动程序,激活这些驱动程序,识别挂载点(驱动器字母),并播放一个声音效果。
(这些内容和Python没有关系,所以我认为这也和你的问题无关。)