क्या एपीआई का उपयोग कर मैक में सभी हार्ड डिस्क की धारावाहिक संख्या प्राप्त करने का कोई आसान तरीका है?मैक हार्ड डिस्क से सीरियल नंबर कैसे प्राप्त करें?
असल में, मैं हार्ड डिस्क जिसके साथ मैं यह पता लगाने कर सकते हैं कि हार्ड डिस्क अपने आवेदन द्वारा या नहीं इस्तेमाल किया गया है (या कहा जाता है) के लिए एक अद्वितीय पहचानकर्ता के लिए देख रहा हूँ।
कृपया मुझे पता है, अगर वहाँ किसी भी अन्य समाधान करते हैं।
नोट: मैं 10.4 और इसके बाद के संस्करण के लिए इस समाधान की जरूरत है।
#include <IOKit/IOKitLib.h>
#include <Cocoa/Cocoa.h>
kern_return_t kr;
io_iterator_t io_objects;
io_service_t io_service;
kr = IOServiceGetMatchingServices(kIOMasterPortDefault,
IOServiceNameMatching("AppleUSBEHCI"), &io_objects);
if(kr != KERN_SUCCESS)
exit(1);
while((io_service= IOIteratorNext(io_objects)))
{
kr = IORegistryEntryCreateCFProperties(io_service, &service_properties, kCFAllocatorDefault, kNilOptions);
if(kr == KERN_SUCCESS)
{
NSDictionary * m = (NSDictionary *)service_properties;
NSLog(@"%@", m);
CFRelease(service_properties);
}
io_iterator_t iter;
//handle kr error
kr = IORegistryEntryGetChildIterator(io_service, kIOServicePlane, &iter);
io_registry_entry_t child;
while((child = IOIteratorNext(iter)))
{
kr = IORegistryEntryCreateCFProperties(child, &child_props, kCFAllocatorDefault, kNilOptions);
NSLog(@"Child props: %@", child_props);
//release child_props
}
IOObjectRelease(io_service);
}
IOObjectRelease(io_objects);
AppleAHCIDiskDriver - हार्ड डिस्क जो जुड़े हुए हैं जिसके परिणामस्वरूप नहीं यूएसबी कर रहे हैं। सिस्टम प्रोफाइलर में देखकर यूएसबी एचडी का उपयोग कर रहा था "होस्ट कंट्रोलर ड्राइवर: \t ऐप्पलसबीईएचसीआई" इसलिए मैंने AppleAHCIDiskDriver के बजाय AppleUSBEHCI का उपयोग करने का प्रयास किया लेकिन इसके परिणामस्वरूप कोई परिणाम नहीं मिला। यकीन नहीं है कि मुझे कुछ याद आ रही है। –
IOKit पथ पर जारी रखने से पहले आप mouviciel के उत्तर को आजमा सकते हैं। यूएसबी से जुड़े उपकरणों के लिए, IOServiceNameMatching ("AppleUSBEHCI") करें और फिर IORegistryEntryGetChildIterator (io_service, kIOServicePlane, और iter) का उपयोग करके अपने सभी बच्चों के माध्यम से पुन: प्रयास करें। – diciu
मैं आपकी मदद की सराहना करता हूं। मैंने mouviciel समाधान बंधे लेकिन काम नहीं किया। जब मैंने IORegistryEntryGetChildIterator का उपयोग करने का प्रयास किया - यह त्रुटि (268435459) लौटा, मैंने इसे IOServiceGetMatchingServices के बाद बुलाया, मुझे यकीन नहीं है कि मुझे क्या याद आ रही है। –