2012-02-03 2 views
6

Когда монтирование на OSX он показывает в/Volumes/mountnameОпределить смонтированный том, как CD/DVD на OSX

Есть ли способ, используя командную строку или C/C++, чтобы определить объем как CD/DVD rom?

Моя нынешняя лучшая идея идет примерно так.

df | grep mountname 

, чтобы получить/Dev/diskNsM путь

, а затем

drutil | grep /dev/diskN 

, чтобы увидеть, если путь установлен устройство горелки.

Это работает, но меня беспокоит случай, когда CD/DVD не является горелкой. Будет ли он отображаться на выходе drutil? У макинтошей даже есть компакт-диск с не-горелкой?

Также я бы предпочел использовать C, C++ или цель C для этого.

Я уже использую

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

, чтобы определить, если объем чтения, , но я не могу видеть, если эта или родственный вызов может отличить CD/DVD и чтения установленного объема.

Этому нужно будет работать только для OSX 10.5 и новее.

Любые идеи?

EDIT:

Использование

diskutil info /Volumes/mysterydrive 

я получил следующий вывод, если его 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 

И это все, что мне нужно!

Я изучу использование IOKit, чтобы сделать это программно позже, но это, по-видимому, самый быстрый способ сделать это.

ответ

2

Вы получите самую подробную информацию

diskutil info /Volume/foo 

В частности, см оптического дисковода и оптических носителей записи, которые вы получаете только для CD/DVD, так что вполне надежны.

К сожалению, рамки, которые diskutil использует, чтобы получить всю эту информацию, являются частными, поэтому будет трудно воспроизвести ее в коде на C.

я не копал глубже в другие варианты, но так как вы можете получить имя диска из statfs может быть теоретически можно использовать IOKit проверить устройство, и вы увидите IOCDMedia или IODVDMedia класса, если это привод CD/DVD (т. е.если вы посмотрите на IO*Media класса BSD Name свойство имеет имя диска, как disk6)

2

компании Apple Developer Central имеет образец кода проекта под названием CDROMSample, который показывает, используя IOKit процедуры для доступа к свойствам CD-ROM. Это может дать вам возможность начать обработку DVD-дисков.

Смежные вопросы