Domanda

Dato un percorso, in Mac OS X, c'è un modo per dire che si tratta di un CD o un DVD montato, al contrario di una directory normale, un file normale, o montati DMG o un altro tipo di file montabile? In particolare vorrei sapere se si tratta di un CD o un DVD quando un utente fornisce un percorso direttamente, o tramite la NSOpenPanel, o trascina il CD sul app. Ho bisogno di prendere azioni speciali in questi casi.

È stato utile?

Soluzione

VolumeToBSDNode codice di esempio di Apple. Credo che dovrebbe avere i bit di codice è necessario.

Descrizione

Mostra come iterare in tutti i volumi installati e recuperare il nome del nodo BSD (/ dev / disk *) per ogni volume. Tali informazioni viene utilizzato per determinare se il volume è su un CD, un DVD o un altro supporto di memorizzazione.

Come Kent sottolinea, la chiamata PBHGetVolParmsSync in questo esempio è deprecato. Ecco un diff per utilizzare la funzione più recente:

-            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));
+
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top