【问题标题】:How OS detects USB Hard Disk when it's Connected操作系统如何在连接时检测 USB 硬盘
【发布时间】:2011-01-12 07:27:09
【问题描述】:

操作系统如何检测外部硬盘驱动器。我的意思是它使了解磁盘的过程或系统调用。 有什么方法可以自动判断是否连接了外置硬盘?

【问题讨论】:

    标签: python operating-system


    【解决方案1】:

    (回答你问题中唯一的问题。)

    对于 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 无关,所以我认为它也与这个问题无关。)

    【讨论】:

    • 这是 Zooba 的重要信息,谢谢。那么当设备连接到系统时如何自动执行某些任务,例如获取所有媒体文件的列表并检查这些文件是否存在于我的系统中?
    • 如果你给我一些关于 Linux 的指导,那就太好了。
    • 我不使用 Linux,所以除了我上面建议的与平台无关的方法 (os.path.exists) 之外,我无能为力。要在这种情况发生时做点什么,你的程序只需要一直运行等待这个事件——然后当它发生时它可以做任何事情。或者,您可以使用操作系统的自动启动功能(如果有)让它在连接设备时运行您的程序(尽管 Python 可能不适合这种方法)。相关关键字包括“自动插入通知”、“自动播放”和“自动运行”。
    • 谢谢。好的,将搜索关键字。但是之前一直检查路径的方法并不好。我会做一些研究并发布我的发现。
    猜你喜欢
    • 2010-09-18
    • 2013-04-20
    • 2012-11-07
    • 1970-01-01
    • 2010-09-24
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多