C++ Builder 求助,利用命令或API函数卸载COM口,在设备管理器中卸载COM 通信端口

ailong91 2016-08-12 07:03:43
您好!本人新手小白,初学C++ Builder,现在遇到一问题,希望能求得大神解决!问题描述如下:

1. 本人机器以前用过许多COM设备,使得再接入COM设备时,COM号不从最小的顺序开始,而是从之前使用过的开始。比如之前我使用了COM3/4/5/6,然后使用过以后,取下设备,再接其他COM设备时便从COM7/8/9 开始,COM7之前的COM号显示在使用中(而实际没有使用)。
2. 为解决以上问题,我尝试再注册表里清空注册表值,然后再试。结果COM7 之前的COM都被释放了(再没有显示折正在使用),但是COM设备的COM号依旧为 COM7/8/9。于是我在 设备管理器中 通过找到COM7/8/9并且手动卸载了COM设备,然后再选择 扫描检测硬件改动,发现COM设备 COM号正常的从 COM3/4/5/6 开始。
3. 综上,需要手动去点击卸载。因此在此请教 是否有WINDOWS 命令或者 可以用 API 函数来代替 卸载 COM设备。

4 . 以上为问题描述,如有不清楚之处请 大神提出,小弟感激不尽!
...全文
1105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ailong91 2019-11-28
  • 打赏
  • 举报
回复
解决办法已创建帖子~
https://blog.csdn.net/ailong91/article/details/103302399
ailong91 2016-08-17
  • 打赏
  • 举报
回复
git@code.csdn.net:snippets/1836419.git 渣渣程序以上传,请各位参考。
ailong91 2016-08-17
  • 打赏
  • 举报
回复
感谢各位的回复,我最终用SetupDi函数解决了问题,但是更新后需要重启,我也是不知原因了。 但是目前能: 1 卸载 COM口,但不删除驱动 2 清除注册表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter的数值项:ComDB 完成以上后 扫描硬件改动,COM口拒正常从1开始向后依次显示。以前被占用的值均被释放,但不知为何,重新分配的COM号不能正常使用,需要重启。目前处于解决 该问题阶段。 如各位有其他想法请 给我回复。
华山沦贱 2016-08-15
  • 打赏
  • 举报
回复
usb串口或串口服务器经常出现的问题,我也就是把注册表清除掉串口号就行了,不知道为什么你的偏不回1。 在“运行”对话框中输入“regedit”进入注册表;然后进入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter这时我们可以找到该数值项:ComDB,它的值代表目前使用中的串口端号。比如1d,它的二进制:0001 1101,则从右往左数代表第1,3,4,5端口被占用。这样我们只需要把ComDB这个数据项删除,关闭注册表(不用重启电脑)即可。
chinayu2007 2016-08-15
  • 打赏
  • 举报
回复
可以看看setupapi的相关资料

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧