[英]Identify a mounted volume as a CD/DVD on 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稍后以編程方式執行此操作,但這似乎是完成此操作的最快方法。
您可以從中獲得最詳細的信息
diskutil info /Volume/foo
特別是請參閱光盤驅動器和光學介質條目,您只能獲得CD / DVD,因此非常可靠。
不幸的是, diskutil用於獲取所有信息的框架是私有的,因此很難在C代碼中復制它。
我沒有深入研究其他選項,但由於你可以從statfs
獲得磁盤名稱,理論上可以使用IOKit
檢查設備,如果它是CD / DVD你會看到IOCDMedia
或IODVDMedia
類驅動器(即如果您查找IO*Media
類,則BSD Name
屬性的磁盤名稱類似於disk6
)
Apple Developer Central有一個名為CDROMSample的示例代碼項目,它顯示了使用IOKit
例程來訪問CD-ROM屬性。 這可能會讓您開始處理DVD。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.