2016-08-30 13 views
2

IOKitなど、インターネットから追加パッケージをダウンロードする必要がない、USBデバイスの製品名を読み取るための方法がありますか?USBデバイスの製品名をportIteratorから取得

これは私の現在のコードです...

func printSerialPaths(portIterator: io_iterator_t) { 
    var serialService: io_object_t 
    repeat { 
     serialService = IOIteratorNext(portIterator) 
     if (serialService != 0) { 
      var key: CFString! = "IOCalloutDevice" 
      var bsdPathAsCFtring: AnyObject? = IORegistryEntryCreateCFProperty(serialService, key, kCFAllocatorDefault, 0).takeUnretainedValue() 
      var bsdPath = bsdPathAsCFtring as! String? 
      if let path = bsdPath { 
       print(path) 
      } 

      var deviceNameCString: [CChar] = [CChar](count: 128, repeatedValue: 0) 
      let deviceNameResult = IORegistryEntryGetName(serialService, &deviceNameCString) 
      let deviceName = String.fromCString(&deviceNameCString)! 
      print("usb Device Name: \(deviceName)") 


     } 
    } while serialService != 0; 
} 

私は運で他の場所を示唆見てきたように私もIORegistryEntryCreateCFProperty()コマンドでは、このような「製品名」などの他のCFStringsを、使用して試してみました。それを置き換えるだけなら、どこの文字列のドキュメントを見つけることができますか?

私が話している製品名が以下に強調表示されています。私はその技術的な名前がどんなものか分からない。

enter image description here

答えて

1

io_service_tハンドルがIOUSBDevice/IOUSBHostDeviceにある場合、それは(少なくともCで、シンボリック定数kUSBProductString)を"USB Product Name"という名前のプロパティを持っている必要があります - 私はそれはあなたが後にしているものだと信じています。 "IOCalloutDevice"プロパティのために既に行っているように、IORegistryEntryCreateCFProperty()でクエリを実行することができます。このプロパティはシンボリック定数kIOCalloutDeviceKeyとして定義されています。

IOKitモジュールをインポートするときにこれらの定数がSwiftに存在しない場合は、独自の定数を定義して、Appleに省略に関する不具合(レーダー)を提出してください。

+0

これには、これを研究し始める良い場所がたくさんありますが、残念ながら、私は何も考えていません。「kUSBProductString」はSwiftには存在しません。他の人を検索すると、 'kUSBVendorName'のようなものが見つかりましたが、Objective-Cのような他の言語でしか動作しないようで、致命的なエラーを引き起こしています。 – crait

+1

その場合、Swiftでこれらの定数の独自のバージョンを定義し、それらを使用するだけでかなり安全です。彼らはOSX 10.11が新しいものを導入したことを除いて、変更するつもりはなく、古いキーと新しいキーの両方のプロパティ値を設定します。 (これは新しいUSBスタックと関係しますが、Appleが新しいプロパティ名を作成した理由は不明です)。 – pmdj

+3

ブリッジヘッダを使用すると、ほとんどの定数を取得できます。SwiftでIOKitをインポートするだけでアクセスできるとは限りません。 http://stackoverflow.com/a/39026607/2227743 – Moritz

関連する問題