Мое приложение будет запускаться с USB-ключа, у которого есть конкретная информация, такая как идентификатор поставщика, идентификатор устройства, ... которая мне нужна.
Я пробовал использовать libusb, но, несмотря на то, что я все еще не могу заставить его работать должным образом, как мне найти правильный USB-накопитель для получения информации?
Обратите внимание, что я хотел бы, чтобы код был кроссплатформенным, поэтому я сначала выбираю libusb.
Редактировать :
Я нашел программу (usbviewer), которая перечисляет все порты USB и конкретную информацию на диске, когда он подключен.
Я читал исходники для linux, информация извлекается напрямую из / proc / bus / usb / devices, это довольно просто.
Но в Windows для получения информации о подключении к USB-узлу требуется около 1000 строк, прежде чем вы получите фактическую информацию в структуре данных (перечислите контроллеры концентраторов, корневые концентраторы, порты ...).
libusb на другой стороне заставляет меня сгенерировать файл INF и установить драйвер через inf-wizard.exe для каждого устройства, прежде чем я смогу получить информацию (хотя я не пробовал на linux).
Изменить 2:
Я нашел способ получить серийный номер устройства в Windows, Linux и Mac OS X (не пробовал MAC OS X, но он должен работать так же, как Linux). В Windows я использую функцию GetVolumeInformation()
, в Linux для чтения серийного номера дисков с файловой системой FAT я читаю 4 байта в соответствующем файле / dev / *, начиная с 0x27 или 0x43 в зависимости от версии FAT.
Но для этого чтения требуется root-доступ, которого у программы не будет, и это кажется мне немного ненадежным.
Любые идеи ?