Определить смонтированный том как CD / DVD на osx

Когда вы монтируете что-либо в osx, это отображается в / Volumes / mountname

Есть ли способ с помощью командной строки или C / C ++ идентифицировать том как CD / DVD ROM?

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

df | grep mountname 

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

, а затем

drutil | grep /dev/diskN 

, чтобы увидеть, является ли смонтированное по пути устройство записывающим устройством.

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

Также я бы предпочел использовать 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 и новее.

Есть идеи?

РЕДАКТИРОВАТЬ:

Используя

  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 для программной реализации позже, но, похоже, это самый быстрый способ сделать это.

6
задан Kimmeh 4 February 2012 в 12:00
поделиться