私はすでにstackoverflow.comとgoogleで答えを検索しましたが、何も見つかりませんでした。
外部 USB HDD (disk1) に属するパーティション (disk1s1) の bsdName を取得しました。
その外付けHDDのシリアル番号を調べる必要があります。私はすでに次のことを試しました(bsd名のサービスを探します):
io_service_t io_service = IOServiceGetMatchingService(kIOMasterPortDefault,IOBSDNameMatching(kIOMasterPortDefault, 0, [@"disk1" cStringUsingEncoding:NSUTF8StringEncoding]));
それに関する問題は次のとおりです。返されるサービスタイプはIOMedia
フィールドがありませんUSB Serial Number
。DiskArbitration
フレームワーク(の抽象化IOMedia
)を使用すると、同じ問題が発生します
だから私は別の方法を試しました: すべてのIOUSBDevice
サービスを取得し、それらを繰り返し処理し、その上で bsdName またはパーティションを探しますIOUSBDevice
。残念ながら、 にはパーティションや bsd 名に関する情報は保存されていませんIOUSBDevice
。
誰でもこの問題で私を助けることができますか?
さらに詳しい情報:
- X コード 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 名を特定することはできません。