我有几个usb设备,包括设备本身和内部USB集线器,以便链接更多这些设备。是否有可能使用libusb或c ++程序中的任何类似内容在此usb链上获取某个特定设备的实际位置?
在linux上使用lsusb -t
我可以得到一个看起来像这样的总线树
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 4: Dev 4, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
|__ Port 3: Dev 5, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/9p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 9, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
|__ Port 4: Dev 20, If 0, Class=Hub, Driver=hub/2p, 480M
|__ Port 2: Dev 21, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
在Mac上我可以使用system_profiler SPUSBDataType
来获得类似的东西。我是否可以使用libusb
以编程方式获取它?
答案 0 :(得分:1)
是。请参阅libusb_get_port_numbers:
http://libusb.sourceforge.net/api-1.0/group__dev.html#gaa4b7b2b50a9ce2aa396b0af2b979544d