Как определить, смонтирован ли по данному пути съемный носитель в Mac OS X?
-
18-09-2019 - |
Вопрос
Учитывая путь в Mac OS X, есть ли способ определить, что это смонтированный компакт-диск или DVD-диск, а не обычный каталог, обычный файл, смонтированный DMG или другой тип монтируемого файла?В частности, я хотел бы знать, является ли это компакт-диском или DVD, когда пользователь указывает путь напрямую или через NSOpenPanel или перетаскивает компакт-диск в приложение.В таких случаях мне необходимо принять особые меры.
Решение
Посмотрите Apple Томтобсдноде пример кода.Я считаю, что он должен содержать нужные вам биты кода.
Описание
Показывает, как перебрать все подключенные тома и получить имя узла BSD (/dev/disk*) для каждого тома.Эта информация используется для определения того, находится ли том на компакт-диске, DVD или каком-либо другом носителе.
Как указывает Кент, PBHGetVolParmsSync
вызов в этом примере устарел.Вот разница для использования новой функции:
- HParamBlockRec pb;
- // Use the volume reference number to retrieve the volume parameters. See the documentation
- // on PBHGetVolParmsSync for other possible ways to specify a volume.
- pb.ioParam.ioNamePtr = NULL;
- pb.ioParam.ioVRefNum = actualVolume;
- pb.ioParam.ioBuffer = (Ptr) &volumeParms;
- pb.ioParam.ioReqCount = sizeof(volumeParms);
-
- // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field.
- // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h.
- result = PBHGetVolParmsSync(&pb);
+ // Use FSGetVolumeParms instead of the deprecated PBHGetVolParmsSync
+ result = FSGetVolumeParms(actualVolume, &volumeParms, sizeof(volumeParms));
+