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