4

私はすでに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 NumberDiskArbitrationフレームワーク(の抽象化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 名を特定することはできません。

4

1 に答える 1

2

C ++でこれを行う方法に関するチュートリアルがあります。以下のコード スニペットの usbDevice である io_service_t を指定すると、bsdName は次のようになります。

     bsdName = ( CFStringRef ) IORegistryEntrySearchCFProperty( 
        usbDevice,
        kIOServicePlane,
        CFSTR( kIOBSDNameKey ),
        kCFAllocatorDefault,
        kIORegistryIterateRecursively )

これは、C++ で USB フラッシュ ディスクからシリアル番号を取得するためのコードですが、目的に合わせて変更できる可能性があります。

http://oroboro.com/usb-serial-number-osx/

于 2012-08-10T17:41:26.633 に答える