2012-02-03 18 views
6

Quando si monta nulla su OSX si presenta sotto/Volumes/mountnameIdentificare un volume montato come un CD/DVD su osx

C'è un modo, utilizzando la riga di comando o C/C++ per identificare il volume come CD/DVD ROM?

La mia migliore idea attuale va più o meno così.

df | grep mountname 

per ottenere il dev/diskNsM percorso/

e poi

drutil | grep /dev/diskN 

per vedere se il percorso del dispositivo montato è il bruciatore.

Questo funziona, ma sono preoccupato per il caso in cui il CD/DVD non è un masterizzatore. Si presenterà ancora nell'output di drutil? I mac sono anche dotati di un'unità CD/DVD non masterizzatore?

Inoltre, preferirei usare C, C++ o l'obiettivo C per farlo.

Uso già

const char *tmp = '/Volumes/mysterydrive'; 
statfs(tmp, &m); 
if(m.f_flags & MNT_RDONLY) 
{ 
    read_only = true; 
} 

per determinare se il volume è di sola lettura, ma non riesco a vedere se questo o qualsiasi chiamata correlato grado di distinguere tra un CD/DVD e un volume montato in sola lettura.

Dovrebbe funzionare solo per OSX 10.5 e successivi.

Qualche idea?

EDIT:

Utilizzando

diskutil info /Volumes/mysterydrive 

ho ricevuto la seguente output se un CD/DVD

Optical Drive Type:  CD-ROM, CD-R, CD-RW, DVD-ROM, DVD-R, DVD-R DL, DVD-RW, DVD+R, DVD+R DL, DVD+RW 
    Optical Media Type:  DVD-R 
    Optical Media Erasable: No 

E questo è tutto quello che serve!

Guarderò utilizzando IOKit per farlo a livello di programmazione più tardi, ma questo sembra essere il modo più rapido per farlo.

risposta

2

di ottenere le informazioni più dettagliate dal

diskutil info /Volume/foo 

In particolare vedere Unità ottica e supporti ottici voci che si ottiene solo per CD/DVD, quindi è abbastanza affidabile.

Sfortunatamente i framework che diskutil utilizza per ottenere tutte le informazioni che sono private, quindi sarà difficile replicarlo in codice C.

Io non scavare più in profondità le altre opzioni, ma dal momento che è possibile ottenere il nome del disco da statfs Può essere in teoria possibile utilizzare IOKit di controllare il dispositivo e vedrai IOCDMedia o IODVDMedia classe, se si tratta di un'unità CD/DVD (esse cercate IO*Media classe la proprietà BSD Name ha il nome del disco come disk6)

2

Apple Developer Central dispone di un progetto di codice di esempio chiamato CDROMSample che mostra utilizzando IOKit routine per accedere alle proprietà di CD-ROM. Questo potrebbe darti un inizio nella gestione dei DVD.

Problemi correlati