当您在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 ++或Objective 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稍后以编程方式执行此操作,但这似乎是完成此操作的最快方法。
答案 0 :(得分:2)
您可以从
获取最详细的信息diskutil info /Volume/foo
请参阅光盘和光学媒体条目,这些条目只适用于CD / DVD,因此非常可靠。
不幸的是, diskutil 用于获取所有信息的框架是私有的,因此很难用C代码复制它。
我没有深入研究其他选项,但由于您可以从statfs
获取磁盘名称,理论上可以使用IOKit
检查设备,您会看到IOCDMedia
或IODVDMedia
类如果是CD / DVD驱动器(即,如果查找IO*Media
类,则BSD Name
属性的磁盘名称为disk6
)
答案 1 :(得分:2)
Apple Developer Central有一个名为CDROMSample的示例代码项目,它显示使用IOKit
例程来访问CD-ROM属性。这也可以帮助您开始处理DVD。