IOKit和DiskArbitration框架可以告诉我很多关于mac上挂载卷的事情,但它们似乎无法区分HFS+和HFS标准卷。
IOKit/DA键Content、DAVolumeKind和DAMediaContent对于hfs标准卷和HFS+卷都是Apple_HFS和HFS。
diskutil和DiskUtility.app可以区别开来,但我觉得它们似乎不是苹果开源的。
附注:statfs (2)不区分
发布于 2008-10-11 22:09:37
有两种方法可以做到这一点:
getattrlist()检索卷的挂载路径的ATTR_VOL_SIGNATURE属性。signature字段。卷的签名是一个16位值,通常解释为两个ASCII字符。HFS的签名是'BD',HFS+是'H+',大小写敏感的HFS+是'HX‘。
getattrlist的手册页说这个字段是一个u_int32,但是FSVolumeInfo结构中的等效字段只有16位,所以我不确定在使用getattrlist时,32位中的哪16位是用签名填充的,如果您想要使用非碳路径,您可能需要做一些实验。
获取命令页
HFS +卷格式参考
FSGetVolumeInfo
发布于 2009-02-15 09:13:51
除了C FSGetVolumeInfo()返回包含signature和filesystemID字段的FSVolumeInfo之外,还有NSWorkspace类的Cocoa -getFileSystemInfoForPath:方法,它返回文件系统类型的字符串表示形式:例如,hfs for HFS+和msdos表示DOS FAT。
发布于 2009-10-13 23:45:25
如果您尝试直接读取分区映射,您可能遇到的另一个问题是,历史上,HFS+卷是嵌套在HFS包装器中的。这样做是为了让任何试图使用带有旧操作系统的HFS+磁盘的人都能在驱动器上看到一个文件,解释所有其他数据在哪里。
https://stackoverflow.com/questions/194628
复制相似问题