Как определить, смонтирован ли по данному пути съемный носитель в Mac OS X?

StackOverflow https://stackoverflow.com/questions/1698124

Вопрос

Учитывая путь в 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));
+
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top