Есть ли способ, используя IOKit
или что-то подобное, не требующий загрузки дополнительных пакетов из Интернета, который я могу использовать для чтения названия продукта USB-устройства?
Это мой текущий код...
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;
}
Я также пытался использовать другие CFStrings, такие как "Product Name" в команде IORegistryEntryCreateCFProperty()
, как я видел в других местах, но безуспешно. Если заменить это все, что мне нужно, где я могу найти документацию для остальных строк?
Название продукта, о котором я говорю, выделено ниже. Я не уверен, каким будет его техническое название.