我想编写一些可以检测USB扩展卡或SD卡读卡器的C ++程序,而不必插入任何东西。这可能吗?在Linux?
答案 0 :(得分:3)
如果您知道确切的供应商ID和/或产品ID,则可以搜索它,如下所示:
for (bus = busses; bus; bus = bus->next)
for (dev = bus->devices; dev; dev = dev->next)
if ((dev->descriptor.idVendor == vendor) && (dev->descriptor.idProduct == product))
return dev;
答案 1 :(得分:0)
是的,您可以通过简单的dmesg
获取idVendor和idProduct。然后,由知识渊博的人提出上面所示的搜索条件。如果你想深入挖掘,如果你有linux,那么你可以探索usb.h
中的<kernel_source>/drivers/usb/core
。
有一个结构:struct usb_device{}
。
如果您更热衷于探索,那么您应该查看driver.c
和hub.c
以查看announce_device()
之类的方法,这些方法会在dmesg
之后打印USB设备详细信息。探索它好! :)