2008-10-11 2 views
1

Структура IOKit и DiskArbitration может рассказать мне много о смонтированных томах на маке, но они, похоже, не могут различать стандартные тома HFS + и HFS.Отличия между стандартными томами HFS + и HFS

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

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

p.s. statfs (2) не дифференцирует

ответ

7

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

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

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

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

getattrlist man page

HFS Plus Volume Format reference

FSGetVolumeInfo

+0

Я пошел с getattrlist, потому что мне не хотелось связываться с углеродом, и может сообщить следующее: младшие 16 бит заполнены и HFS Standard -> BD, HFS + -> H + BUT, что удивительно, ntfs, fat32 - > BD и HFSX -> H + (не HX). Странно, да? Тем не менее, охватывает мой случай. Благодарю. – 2008-10-12 15:25:58

1

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

0

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

Смежные вопросы