2012-02-03 13 views
6

पर एक सीडी/डीवीडी के रूप में एक घुड़सवार मात्रा पहचानें इसके तहत/खंड/mountnameजब आप OSX पर कुछ भी माउंट OSX

दिखाता है वहाँ कोई तरीका है, कमांडलाइन या C/C++ का उपयोग कर एक के रूप में मात्रा की पहचान के लिए सीडी/डीवीडी रोम?

मेरा वर्तमान सबसे अच्छा विचार इस तरह कुछ चला जाता है।

df | grep mountname 

/dev/diskNsM पथ

और अगर पथ घुड़सवार डिवाइस बर्नर है तो

drutil | grep /dev/diskN 

देखने के लिए मिलता है।

यह काम करता है, लेकिन मैं उस मामले के बारे में चिंतित हूं जहां सीडी/डीवीडी बर्नर नहीं है। क्या यह अभी भी ड्रुटिल के उत्पादन में दिखाई देगा? क्या मैक भी गैर-बर्नर सीडी/डीवीडी ड्राइव के साथ आते हैं?

इसके अलावा मैं ऐसा करने के लिए सी, सी ++ या उद्देश्य सी का उपयोग करना पसंद करूंगा।

मैं पहले से ही

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

निर्धारित करने के लिए का उपयोग करता है, तो मात्रा केवल पढ़ने के लिए है, लेकिन मैं नहीं देख सकते हैं इस या किसी भी संबंधित कॉल एक सीडी/डीवीडी और एक केवल पढ़ने के लिए घुड़सवार मात्रा के बीच अंतर कर सकते हैं।

इसे केवल ओएसएक्स 10.5 और नए के लिए काम करने की आवश्यकता होगी।

कोई विचार?

संपादित करें:

का उपयोग

diskutil info /Volumes/mysterydrive 

मैं निम्नलिखित उत्पादन करता है, तो इसकी एक सीडी मिल गया/डीवीडी

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 

और वह सब मैं की जरूरत है!

मैं इसे प्रोग्रामेटिक रूप से बाद में करने के लिए आईओकिट का उपयोग करने में देखता हूं, लेकिन ऐसा करने का यह सबसे तेज़ तरीका प्रतीत होता है।

उत्तर

2

आप विशेष रूप से से

diskutil info /Volume/foo 

सबसे विस्तृत जानकारी प्राप्त देखने ऑप्टिकल ड्राइव और ऑप्टिकल मीडिया प्रविष्टियों जो आप केवल सीडी/डीवीडी के लिए मिलता है तो यह काफी विश्वसनीय है।

दुर्भाग्य से फ्रेमवर्क जो डिस्ककिइल सभी जानकारी प्राप्त करने के लिए उपयोग करता है, इसलिए इसे सी कोड में दोहराना मुश्किल होगा।

मेरे पास अन्य विकल्प में गहराई तक जाएं नहीं किया, लेकिन यह संभव सिद्धांत डिवाइस की जाँच करने के लिए उपयोग करने के लिए IOKit में हो सकता है, क्योंकि आप statfs से डिस्क नाम प्राप्त कर सकते हैं और आप IOCDMedia या IODVDMedia वर्ग देखेंगे अगर यह होता है एक सीडी/डीवीडी ड्राइव (यानीयदि आप IO*Media वर्ग के लिए देखो BSD Name संपत्ति) disk6 तरह डिस्क नाम

2

Apple डेवलपर केन्द्रीय एक नमूना कोड CDROMSample बुलाया परियोजना है कि सीडी-रोम गुण का उपयोग करने के IOKit दिनचर्या का उपयोग कर से पता चलता है है। यह आपको डीवीडी को संभालने में भी शुरुआत कर सकता है।