我已经搜索stackoverflow.com和谷歌的答案,但找不到任何东西。获取USB硬盘的序列号(Mac OS)
我得到属于外部USB HDD(disk1)的分区(disk1s1)的bsdName。
我需要找出该外部硬盘的序列号。 我已经尝试了以下(寻找与BSD名称服务):
io_service_t io_service = IOServiceGetMatchingService(kIOMasterPortDefault,IOBSDNameMatching(kIOMasterPortDefault, 0, [@"disk1" cStringUsingEncoding:NSUTF8StringEncoding]));
与存在的问题是:返回的服务类型是IOMedia
其中有没有现场USB Serial Number
。我结束了同一个问题,如果我使用DiskArbitration
框架(这是IOMedia
的abstraktion)
所以我想周围的其他方法:获取所有IOUSBDevice
服务遍历他们只需按一下该IOUSBDevice
的bsdName或分区。遗憾的是,IOUSBDevice
中没有关于任何分区或bsd名称的信息。
任何人都可以帮我解决这个问题吗?
进一步的信息:
- 的XCode 4.3.2
- 的Mac OS X的狮子(10.7.3)
编辑: 这里是输出的最有趣的部分,如果我遍历所有IOUSBDevice或AppleUSBEHCI io_services:
Child props: {
"Bus Power Available" = 250;
"Device Speed" = 2;
IOCFPlugInTypes = {
"9dc7b780-9ec0-11d4-a54f-000a27052861" = "IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle";
};
IOGeneralInterest = "IOCommand is not serializable";
IOUserClientClass = IOUSBDeviceUserClientV2;
"Low Power Displayed" = 0;
PortNum = 3;
"Requested Power" = 250;
"USB Address" = 6;
"USB Product Name" = "Mass Storage Device";
"USB Serial Number" = 09021000000000003740385375;
"USB Vendor Name" = JetFlash;
bDeviceClass = 0;
bDeviceProtocol = 0;
bDeviceSubClass = 0;
bMaxPacketSize0 = 64;
bNumConfigurations = 1;
bcdDevice = 2560;
iManufacturer = 1;
iProduct = 2;
iSerialNumber = 3;
idProduct = 4096;
idVendor = 34148;
kHasMSCInterface = 1;
locationID = "-99418112";
sessionID = 209792844564562;
uid = "USB:85641000003740385375";
}
正如你所看到的,我得到了序列号,但是我没有可能告诉这个设备有哪个bsd名称。
所以问题http://stackoverflow.com/questions/2019244/how-to-get-serial-number-from-mac-hard-disks – Deepesh 2012-04-27 09:43:23
嗨elppa,谢谢您的回答但链接中的解决方案正是我已经尝试过的:遍历所有IOUSBDevices - 这是AppleUSBEHCI的子集。如果我尝试这种方法,我找不到任何有关bsd名称或分区的信息。也许我只是错过了一些东西。在那种情况下:请给我更多的信息吗? – 2012-04-27 10:25:18
注意:这不是硬盘序列号。这是USB序列号,它们是两个不同的东西。 (这也是为什么你不看硬盘名称,也就是为什么,因为这只是一个USB接口,而不是硬盘接口)。 – chacham15 2013-04-26 23:14:10