我需要查看具有特殊供应商/产品ID的USB设备是否可用(我只检查它是否存在,无需访问)。当使用libusb-win32时,只能为安装了libusb驱动程序/过滤器驱动程序的设备执行此操作,这在我的情况下不起作用。
那么......有可能枚举所有可用的USB设备并获得他们的VID / PID吗?任何可用的示例代码?
谢谢!
答案 0 :(得分:1)
是的,可以通过WMI查询对其进行存档,例如获取插入的USB笔式驱动器的SN(如果有的话,有些则没有)。
Check WMI Win32_PNPEntity class或Win32_USBHub,Win32_USBControllerDevice类。
修改强>
要枚举所有设备,请删除WHERE子句:
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PnPEntity WHERE DeviceID = 'USB\\VID_8087&PID_0024\\5&38CA7A24&0&1'");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_PnPEntity instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}
答案 1 :(得分:0)
您不需要安装驱动程序/过滤器来枚举设备或找到具有特定供应商/产品ID的设备。
libusb-win32
归入libusbx
,被libusb
重新吸收。
如果您检查libusb.info,那么您将找到适用于Linux,MacOSX和Windows的官方libusb的最新端口。 (无需使用单独的libusb-win32)。
发行版附带一个名为listdevs
的示例,它按供应商/产品ID列出所有连接的设备(过滤器或否)。我检查了Linux(Ubuntu 12.10)和Win32(Windows 7 Pro),两者的工作方式相同。