代码之家  ›  专栏  ›  技术社区  ›  Gordon Childs

区分HFS+和HFS标准体积

  •  1
  • Gordon Childs  · 技术社区  · 16 年前

    iokit和diskramination框架可以告诉我很多关于mac上装载卷的事情,但是它们似乎无法区分hfs+和hfs标准卷。

    IOKIT/DA键 Content , DAVolumeKind DAMediaContent 对于HFS标准和HFS+体积,始终是Apple_HFS和HFS。

    diskutil和diskutility.app 可以 告诉你区别吧,但我觉得苹果似乎并没有开源。

    P.S.Statfs(2)不区分

    3 回复  |  直到 15 年前
        1
  •  7
  •   Brian Webster    16 年前

    有两种方法可以做到这一点:

    1. 使用 getattrlist() 检索 ATTR_VOL_SIGNATURE 卷的装入路径的属性。
    2. 使用carbon调用fsgetvolumeinfo()并查看 signature 返回结构的字段。

    卷的签名是一个16位的值,通常解释为两个ASCII字符。hfs的签名是“bd”,hfs+是“h+”,区分大小写的hfs+是“hx”。

    的主页 getattrlist 表示该字段是一个u int32,但fsvolumeinfo结构中的等效字段只有16位,因此在使用时,我不确定用签名填充32中的哪16位 获得选项卡 如果你想走非碳路线的话,你可能需要做一些实验。

    getattrlist man page

    HFS Plus Volume Format reference

    FSGetVolumeInfo

        2
  •  1
  •   mouviciel    15 年前

    除了碳 FSGetVolumeInfo() 返回一个 FSVolumeInfo 包含 signature filesystemID 田野里,有可可 -getFileSystemInfoForPath: 类方法 NSWorkspace 它返回文件系统类型的字符串表示形式:例如, hfs 对于HFS+和 msdos 对于DOS FAT。

        3
  •  0
  •   Azeem.Butt    15 年前

    如果您尝试直接阅读分区图,您可能会遇到的另一个问题是,历史上,hfs+卷嵌套在hfs包装器中。这样做是为了让任何试图将HFS+磁盘与旧操作系统一起使用的人都能在驱动器上看到一个单独的文件,解释他们所有剩余数据的位置。

    推荐文章