[Windows] Работа с USB устройствами: как получить Manufacturer/... ?

yolki

Имеем: свисток с FTDI, за которым есть некоторе устройство.
в линуксе оно выглядит так:

# lsusb
...
Bus 002 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
...

Fine.
/var/log/messages:

usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
USB Serial support registered for generic
usbserial: USB Serial Driver core
usbcore: registered new interface driver ftdi_sio
USB Serial support registered for FTDI USB Serial Device
ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
hub 2-0:1.0: state 7 ports 8 chg 0000 evt 0004
ohci_hcd 0000:00:06.0: GetStatus roothub.portstatus [1] = 0x00010101 CSC PPS CCS
hub 2-0:1.0: port 2, status 0101, change 0001, 12 Mb/s
hub 2-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x101
ohci_hcd 0000:00:06.0: port[1] reset timeout, stat 00000111
hub 2-0:1.0: port 2 not reset yet, waiting 50ms
hub 2-0:1.0: port 2 not reset yet, waiting 200ms
ohci_hcd 0000:00:06.0: GetStatus roothub.portstatus [1] = 0x00100103 PRSC PPS PES CCS
usb 2-2: new full-speed USB device number 3 using ohci_hcd
ohci_hcd 0000:00:06.0: port[1] reset timeout, stat 00000113
hub 2-0:1.0: port 2 not reset yet, waiting 50ms
hub 2-0:1.0: port 2 not reset yet, waiting 200ms
ohci_hcd 0000:00:06.0: GetStatus roothub.portstatus [1] = 0x00100103 PRSC PPS PES CCS
usb 2-2: ep0 maxpacket = 8
usb 2-2: default language 0x0409
usb 2-2: udev 3, busnum 2, minor = 130
usb 2-2: New USB device found, idVendor=0403, idProduct=6001
usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-2: Product: G.E.C.K v.1.0
usb 2-2: Manufacturer: Future-Tec a division of Vault-Tec
usb 2-2: SerialNumber: 0001
usb 2-2: usb_probe_device
usb 2-2: configuration chosen from 1 choice
usb 2-2: adding 2-2:1.0 (config interface 0)
ftdi_sio 2-2:1.0: usb_probe_interface
ftdi_sio 2-2:1.0: usb_probe_interface - got id
ftdi_sio 2-2:1.0: FTDI USB Serial Device converter detected
usb 2-2: Detected FT232BM
usb 2-2: Number of endpoints 2
usb 2-2: Endpoint 1 MaxPacketSize 64
usb 2-2: Endpoint 2 MaxPacketSize 64
usb 2-2: Setting MaxPacketSize 64
ftdi_sio ttyUSB0: Unable to read latency timer: -32
usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0
hub 2-0:1.0: state 7 ports 8 chg 0000 evt 0004

Хочу получить: Manufacturer, Product, Serial Number
Под виндой через SetupApi смог найти только VendorID/ProductID, которые идентифицируют FTDI, что не интересно.

yolki

да, в MSDN есть кое-что типа такого: клац
и тут вкусно выглядят

UCHAR iManufacturer;
UCHAR iProduct;
UCHAR iSerialNumber;

но похоже это доступно только из kernel-mode драйверов.
а из юзер-спейса?

Dasar

через WMI что получается вытащить?

yolki

нет, только то что устройство - FTDI

salamander

Существуют способы экспортировать низкоуровневые интерфейсы работы с USB в userspace (в том числе и интересующий тебя дескриптор). Широко распространенного, как usbdevfs в Linux, в винде к сожалению нет. Из существующих решений: опенсорсные libusb-win32 и libusbK, микрософтовский WinUSB. Все они требуют установки своего драйвера в систему, который собственно и экспортирует интерфейсы. Если тебе нужно только узнать производителя, то это может оказаться решением из разряда "атомной бомбой по воробьям".
upd: вот тут есть пример, использующий libusb-0. libusb-win32 имеет такое же API, так что он с ней заработает едва ли не из коробки.

yolki

мне нужно перечислить девайсы в системе, убедиться, что воткнут девайс от конкретного производителя, сверить серийный номер и модель. дальше работать с ним через ком-порт.
мало ли FTDI воткнуто...
попробую покурить API собственно FTDI..

AlexV769

а у FTDI нет возможности заменить VEN и DEV id?

yolki

ну не я разработчик железки...

yolki

кстати, виртуалбокс замечательно видит Manufacturer/Product/Serial и при проброске в виртуалку оно именно так и называется, а не USB Serial converter или как-то FTDI Serial device

viktor954

Вот тут вроде вытаскивают мануфактурера:
http://blogs.msdn.com/b/powershell/archive/2007/02/24/displa...
UPD: ышшо: http://stackoverflow.com/questions/123986/how-to-determine-u...
Оставить комментарий
Имя или ник:
Комментарий: