Come sapere se un dato percorso è montato un supporto rimovibile in Mac OS X?
-
18-09-2019 - |
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.
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));
+