Pregunta

Dado un camino, en Mac OS X, ¿hay una manera de decir que se trata de un CD o DVD montado, a diferencia de un directorio por defecto, un archivo normal, o montado DMG u otro tipo de archivos montable? Específicamente me gustaría saber si se trata de un CD o DVD cuando un usuario proporciona una ruta directa, oa través de la NSOpenPanel, o arrastra el CD en la aplicación. Tengo que tomar una acción especial en estos casos.

¿Fue útil?

Solución

VolumeToBSDNode código de ejemplo de Apple. Creo que debería tener los bits de código que necesita.

Descripción

Muestra la forma de repetición en todos los volúmenes montados y recuperar el nombre de nodo BSD (/ dev / disk *) para cada volumen. Esa información se utiliza para determinar si el volumen está en un CD, DVD, o algún otro medio de almacenamiento.

Como señala Kent, la llamada PBHGetVolParmsSync en este ejemplo está en desuso. Aquí está un diff para utilizar la función nueva:

-            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));
+
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top