我有4个usb-serial转换器(Prolific)连接到usb集线器.当我查看设备管理器时,我会看到动态分配的Com编号.但是,在将集线器重新插入另一个USB端口或在系统重新启动之后,这些com号有时会发生变化.有没有办法为每个转换器更新这些数字而无需手动搜索这些数字?基本上我想在我的C#项目中有一个方法,它会为每个转换器寻找一些唯一的ID,然后获得新的com号码.有没有办法做到这一点(尝试了一些wmi查询,但没有成功)?
今天我想到了一个解决方法.所以我有另一个问题.如何获取有关USB集线器的信息?基本上我可以以某种方式找到我的USB集线器,然后检索有关连接到集线器端口设备的信息.然后通过wmi查询获取这些设备的com号将非常容易.我用USBView看到有可能获得这样的信息.我可以看到一棵树从根集线器开始 – >通用USB集线器 – >多产的USB到串行通信端口,但现在如何在代码中执行此操作.有任何想法吗?
解决方法
它的简单,通过使用win32本机调用,你可以得到,
我只是提供一部分代码来帮助你,
var guidComPorts = Guid.Empty; UInt32 dwSize; IntPtr hDeviceInfo; var buffer = new byte[512]; var providerName = new[] { }; var spddDeviceInfo = new SpDevinfoData(); var bStatus = SetupDiClassGuidsFromName("Ports",ref guidComPorts,1,out dwSize); if (bStatus) { hDeviceInfo = SetupDiGetClassDevs( ref guidComPorts,(IntPtr)null,DigcfPresent | DigcfProfile); if (hDeviceInfo.ToInt32() != 0) { while (true) { spddDeviceInfo.CbSize = Marshal.SizeOf(spddDeviceInfo);// IS IT THIS LINE WORK FOR 64 BIT bStatus = SetupDiEnumDeviceInfo(hDeviceInfo,nDevice++,ref spddDeviceInfo); break; } } return; } }
使用此代码……
查找友好名称,拆分字符串获取您要查找的确切端口.
我已经完成了它,它的工作正常,由于一些保密原因无法在这里提供完整的代码.
更多查找此链接
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。