我想列出所有连接的设备以编程方式。基本上,我要做的是检查 USB端口和PS2端口连接的设备数量。 < / p>
答案 0 :(得分:0)
您可以使用SetupDiEnumDeviceInterfaces和SetupDiGetDeviceInterfaceDetail(http://msdn.microsoft.com/en-us/library/windows/hardware/ff551120%28v=vs.85%29.aspx)来获取有关Windows的详细信息。
以下是示例代码:https://gist.github.com/rakesh-gopal/9ac217aa218e32372eb4
SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &GUID_DEVINTERFACE_USB_DEVICE,dwMemberIdx, DevIntfData);
SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevIntfData, NULL, 0, &dwSize, NULL);
我们的想法是重复调用SetupDiEnumDeviceInterfaces以获取所有连接的设备,然后调用SetupDiGetDeviceInterfaceDetail以获取有关所连接设备的更多详细信息。
您还可以使用libusb在类似unix的系统上获得类似于lsusb的输出。 请记住使用-lusb标志进行编译。
此处使用libusb的代码:https://gist.github.com/rakesh-gopal/12d4094e2b882b44cb1d
#include <stdio.h>
#include <usb.h>
main(){
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
for (bus = usb_busses; bus; bus = bus->next)
for (dev = bus->devices; dev; dev = dev->next){
printf("Trying device %s/%s\n", bus->dirname, dev->filename);
printf("\tID_VENDOR = 0x%04x\n", dev->descriptor.idVendor);
printf("\tID_PRODUCT = 0x%04x\n", dev->descriptor.idProduct);
}
}