V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
binss
V2EX  ›  问与答

MAC OS 是如何判断插入的设备类型的?

  •  
  •   binss · 2016-07-16 11:25:56 +08:00 · 2121 次点击
    这是一个创建于 3054 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 MAC OS 下,插入不同的设备有不同的图标。

    比如说插入移动硬盘时,显示的是 ExternalDisk.png ,而插入 U 盘时,显示的是 RemovableDisk.png ,插入内存卡时,显示 Card.png 。

    请问系统是如何区分这些设备类型的呢?我尝试了 mount 、 system_profiler SPUSBDataType 等命令都没能找出区分的手段。

    有没有什么命令、方法能够对设备类型进行区分呢?

    8 条回复    2016-07-16 17:37:28 +08:00
    otakustay
        1
    otakustay  
       2016-07-16 13:32:57 +08:00
    diskutil info 应该能查出来吧
    chinafeng
        2
    chinafeng  
       2016-07-16 14:07:07 +08:00 via iPhone
    可以说下这三个图片哪里找到的吗, 谢谢
    Kirscheis
        3
    Kirscheis  
       2016-07-16 14:08:19 +08:00 via Android
    ioreg -p IOUSB?
    MrGba2z
        4
    MrGba2z  
       2016-07-16 14:27:43 +08:00
    https://github.com/google/usbinfo
    不知道这个能否有帮助
    kooze
        5
    kooze  
       2016-07-16 15:09:11 +08:00
    device class
    binss
        6
    binss  
    OP
       2016-07-16 15:57:38 +08:00   ❤️ 1
    @chinafeng /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/下有一些,但这些是手动拷出来的,参考 http://sspai.com/25935
    @Kirscheis 除了 id 不同其它一致
    @MrGba2z 查出来 idVendor 、 idProduct 、 iSerialNumber 好像并不能说明什么
    @kooze 这个好像只能具体到 Mass Storage
    binss
        7
    binss  
    OP
       2016-07-16 16:00:18 +08:00
    @otakustay 好像只有 diskutil info 可以。有个 Removable Media 的项,移动硬盘为 NO , U 盘为 YES 。而内存卡好像是单纯靠 Device / Media Name 来识别的,只有内置读卡器会被识别为 Card ,换个读卡器插 USB 口就读成 U 盘了。

    也不知道是如何判断的 Removable Media
    bao3
        8
    bao3  
       2016-07-16 17:37:28 +08:00 via Android
    你插入电脑时,硬件节点就已经定型了,所以剩下的是判断类型, PID 和 VID 确定是产品品类,然后加载对应驱动,决定了驱动对应的 PNG 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3313 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:40 · PVG 08:40 · LAX 16:40 · JFK 19:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.