gpt4 book ai didi

c - API 列出所有连接的设备?

转载 作者:行者123 更新时间:2023-11-30 17:22:55 26 4
gpt4 key购买 nike

我想以编程方式列出所有连接的设备。基本上,我想做的是检查USB端口和PS2端口连接了多少设备。

最佳答案

您可以使用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);
}
}

关于c - API 列出所有连接的设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com