【发布时间】:2021-03-22 11:53:20
【问题描述】:
一方面,代码如何区分外部 USB 硬盘驱动器和固态驱动器与另一方面的 USB 记忆棒?
我不熟悉 macOS API(或系统调用、中断、消息传递和其他东西),但我猜它会在 I/O Kit 或磁盘仲裁中使用?
在终端命令行上,您可以使用system_profiler SPUSBDataType 并查看“可移动媒体”下列出的此信息。
【问题讨论】:
-
任何通过 USB 连接的驱动器(笔/硬盘/ssd)都将被视为仅可移动驱动器。您可以尝试的一件事是检查它们的大小和格式类型。但我认为这对你正在寻找的东西没有多大帮助。
-
@AjayKumar:似乎有“可移动媒体”的概念。当我在 USB 读卡器中连接 USB 硬盘驱动器、USB SSD、USB 记忆棒和 SD 卡时,
system_profiler SPUSBDataType认为 USB 记忆棒和 SD 卡是“可移动媒体”,而不是硬盘驱动器或 SSD,即使也可以卸下整个驱动器。我猜这是需要将软盘、CD 和 DVD 驱动器与硬盘驱动器区分开来的扩展。我使用跨平台库遇到了这个问题,该库从 Windows 的磁盘列表中排除了 USB 记忆棒,但对于 Mac 没有。 -
嗯。有趣的东西。我已经为这个线程添加了书签。继续挖掘。祝你好运。 !
-
通常,除了系统调用、中断、消息传递和使用 C 时涉及的其他事情之外,根本没有 API。您可以通过系统调用以编程方式查找设备。
system_profiler听起来像是一个程序,而不是系统接口。
标签: macos usb-drive iokit usb-mass-storage diskarbitration