笔者近期做的项目,要求能够读取到Usb设备连接电脑的端口序号。usb设备指Android平板、手机等类似安卓的设备。设备通过UsbHub连接到电脑上也需要能够读取。类似Windows设备管理中的“位置路径”,如下图所示:

尝试了很多种方法,比如:WMI、SetupApi、注册表等,都以失败告终。都只能读取到一些基础的设备信息,始终无法获取到具体哪个端口。后来在注册表中翻找的过程中,发现某一项:LocationInfo与设备管理中的“位置路径”完全一致,通过分析总结出得到此信息的方法,却:

1、先通过设备标识找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0B05&PID_7773\FBNPFP142270

2、在其下面找到子项:ParentIdPrefix,内容为:7&3865104f&1

3、再找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0B05&PID_7773&MI_00\7&3865104f&1&0000

4、在其下面找到子项:LocationInformation,得到内容为:0000.0014.0000.001.003.004.000.000.000

将上面的值内容与图片中的“位置路径”对比,发现完全一致。001.003.004含义分别为:电脑USB端口1,一级hub的usb端口3,二级hub的usb端口4

兴奋之后,把此功能集成到项目中,然后使用不同设备进行集成设置。测试时发现有的设备,使用此方法找不到,也就是这个方法不通用,真是晴天霹雳。没办法,继续上网查找方法。

后来找到一个VC++的源码,项目名叫vcUsbView,除了语言不同之外,功能完全符合要求。看了一下源码,代码质量还可以。不过代码量不小,需要完全翻译为Delphi才行。不耽误时间,直接操刀翻译。经过1天多的工作,转换完成。运行效果如下:

在从c++转Delphi的过程中,也遇到了一些棘手的问题,比如0空间数组,在Delphi中未找到对应的方法。

Delphi版的UsbView源码:https://download.csdn.net/download/cuizm/19870769

Delphi读取Usb设备所属端口相关推荐

  1. linux 怎么查看usb设备端口号,嵌入式Linux USB设备检测端口和地址

    我发展我的板USB应用.它有两个USB端口.当我插上USB驱动器在他们每个人我得到控制台以下消息:嵌入式Linux USB设备检测端口和地址 端口1: usb 1-1: new high speed ...

  2. php读取usb设备信息,急,请问如何获取USB设备的路径,非HID类型

    用这个函数试试 //GetDeviceViaInterface:Open a handle via a device interface HANDLE GetDeviceViaInterface( G ...

  3. 怎么查看usb读取信息_电脑弹出USB设备时提示该设备正在使用中的解决方法

    转载的文章,原文: 电脑弹出USB设备时提示该设备正在使用中的解决方法-系统城​www.xitongcheng.com 电脑弹出USB设备时提示该设备正在使用,虽然在正常显示时并没有程序在使用,但是确 ...

  4. USB设备驱动之驱动

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangweiqing80/article/details/83014292 上一篇文章USB设备驱 ...

  5. USB系列:列出你的USB设备

    USB现在已经成为PC机必不可少的接口之一,几乎所有的设备都可以接在USB设备上,USB键盘.鼠标.打印机.摄像头,还有常用的U盘等等,从本篇文章开始,将集中篇幅介绍一下在DOS中使用USB设备的方法 ...

  6. python3操作USB设备

    本文以读取USB无线测量设备数据举例说明.需要用到pyusb模块和libusb-1.0.dll,详细说明如下. 一.配置libusb-1.0.dll 下载libusb-1.0.22.7z,根据操作系统 ...

  7. Android P检测USB插入拔出消息并基于libaums实现读取USB文件

    Android设备中检测USB插入消息,并且从USB中读取文件. 一.导入libaums包 libaums开源项目地址:https://github.com/magnusja/libaums buil ...

  8. 计算机u盘 硬盘无法读取,电脑无法识别usb设备,电脑无法识别u盘,移动硬盘解决方法汇总...

    2020-03-21 通常我们用来储存数据的有U盘和移动硬盘,移动硬盘储存的数据要多很多,而使用中我们也会遇到一些问题,如移动硬盘无法识别,在Win10电脑中也会出现,如出现右下角弹窗, 无法识别US ...

  9. linux脚本获取usb设备,Linux基于USB端口执行脚本

    您应该弄清楚您的外部端口与哪个USB总线连接.在我的电脑上所有外部USB端口都连接到Bus 01 要做这个检查lsusb -t的输出,然后附上一个usb设备并再次检查输出lsusb -t.那么你知道什 ...

最新文章

  1. HDU 4869 Turn the pokers(思维+组合公式+高速幂)
  2. html中调用flex中的函数
  3. 高精度倾斜摄影建模解决方案
  4. 红帽子linux改ip命令,RedHat 7 修改IP地址
  5. 延迟开学?这些教育读书公众号可以帮助孩子学习! 你都关注了吗?
  6. java 构造器(constructor)
  7. 年会尽头是闲鱼!超11万人在闲鱼转卖年会奖品
  8. Python一句话过滤字符串中的空白字符和中英文标点
  9. 你有哪些“相见恨晚”的 UE4 学习资料?
  10. Python Matplotlib
  11. linux DISPLAY变量
  12. ssm基于Java web的校园滴滴代驾管理系统毕业设计源码260839
  13. CCSK云安全认证-M3-管理云计算的安全性和风险
  14. 上周热点回顾(4.1-4.7)
  15. 一文搞清楚码元速率(波特率)和比特速率(比特率)的区别
  16. 【纸牌屋】第一季第二集经典台词
  17. 大一计算机应用基础实验指导,大学计算机应用基础实验指导详解.doc
  18. anyview+4.0java版_anyview4.0手机阅读器
  19. 销轮计算器——走出阶梯轴的「笨拙」困境
  20. 零基础学平面设计还学美工设计比较有前途?

热门文章

  1. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第八章 光和颜色 Light And Color
  2. 金迪短信猫在linux下面的应用
  3. 角色建模攻略|手把手从零开始教你布线教程
  4. 修改计算机设备管理器信息,电脑信息修改
  5. 如何使用Outlook设置自定义品牌的电子邮件地址(Office365)
  6. 介绍一下google推荐的Android图片加载框架——Glide
  7. 人工智能OA期刊,推荐给需要的UU们
  8. matlab的求实部,[合集]请教matlab中复数除法如何求实部虚
  9. Activity全屏显示切换到非全屏显示抖动解决办法
  10. 小程序反编译 g is not defined_适合闺蜜聚会发的小句子,呆萌可爱,忍不住点赞!...