Различение между стандартными томами HFS + и HFS - PullRequest
1 голос
/ 12 октября 2008

IOKit и инфраструктура DiskArbitration могут многое рассказать мне о смонтированных томах на Mac, но, похоже, они не способны различать тома HFS + Standard и HFS Standard.

Ключи IOKit / DA Content, DAVolumeKind и DAMediaContent всегда являются Apple_HFS и hfs для томов HFS Standard и HFS +.

diskutil и DiskUtility.app могут заметить разницу, но мне кажется, что они не были открыты Apple.

p.s. statfs (2) не различает

Ответы [ 3 ]

7 голосов
/ 12 октября 2008

Есть два способа сделать это:

  1. Используйте getattrlist(), чтобы получить атрибут ATTR_VOL_SIGNATURE для пути монтирования тома.
  2. Используйте вызов Carbon FSGetVolumeInfo () и посмотрите в поле signature возвращаемой структуры.

Подпись тома представляет собой 16-битное значение, обычно интерпретируемое как два символа ASCII. Подпись для HFS - «BD», HFS + - «H +», а с учетом регистра HFS + - «HX».

Страница man для getattrlist говорит, что это поле u_int32, но эквивалентное поле в структуре FSVolumeInfo составляет всего 16 бит, поэтому я не уверен, какие 16 бит из 32 заполняются подписью при использовании getattrlist, вам, вероятно, придется немного поэкспериментировать, если вы хотите пойти по неуглеродному маршруту.

Справочная страница по getattrlist

Справочник по формату тома HFS Plus

FSGetVolumeInfo

1 голос
/ 15 февраля 2009

В дополнение к Carbon FSGetVolumeInfo(), который возвращает FSVolumeInfo, содержащий поля signature и filesystemID, существует метод Cocoa -getFileSystemInfoForPath: класса NSWorkspace, который возвращает строковое представление типа файловой системы: hfs для HFS + и msdos для DOS FAT.

0 голосов
/ 14 октября 2009

Другая проблема, с которой вы можете столкнуться, если вы когда-нибудь попробуете читать карты разделов, заключается в том, что исторически HFS + тома были вложены в оболочки HFS. Это было сделано для того, чтобы любой, кто пытается использовать диск HFS + с более старой ОС, увидел на диске один файл, объясняющий, где находятся все остальные данные.

...