在本文将使用libudev库来访问hidraw的设备。通过libudev库,我们可以查询设备的厂家ID(Vendor ID, VID),产品ID(Product ID, PID),序列号和设备字符串等而不需要打开设备。进一步,libudev可以告诉我们在/dev目录下设备节点的具体位置路径,为应用程序提供一种具有足够鲁棒性而又和系统厂家独立的访问设备的方式。使用libudev库,需要包含libudev.h头文件,并且在编译时加上-ludev告诉编译器去链接udev库。

将列出当前连接在系统中的所有hidraw设备,并且输出它们的设备节点路径、生产商、序列号等信息。

为了获取这些信息,需要创建一个udev_enumerate对象,其中“hidraw”字符串作为过滤条件,

libudev将返回所有匹配这个过滤字符串的udev_device对象。

这个列子的步骤如下:

1、 初始化库,获取一个struct udev句柄

2、枚举设备

3、对找到的匹配设备输出它的节点名称,找到实际USB设备的起始节点,打印出USB设备的IDs和序列号等,最后解引用设备对象

4、解引用枚举对象

5、解引用udev对象

具体代码如下:

编译程序:

gcc -Wall -g -o udev_example udev_example.c -ludev

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/libra13179/p/12851163.html

linux c 获取usb vid,Linux使用libudev获取USB设备VID及PID的方法相关推荐

  1. linux判断usb进程命令,一种在Linux系统下审计USB设备历史使用情况的方法与流程...

    本发明涉及计算机审计技术领域,具体涉及一种在Linux系统下审计USB设备历史使用情况的方法. 背景技术: 如今,在linux系统中,对于USB设备的插入拔出事件,系统自身是不带有审计功能的,这使得普 ...

  2. linux查看usb文件,linux lsusb查看USB信息

    linux lsusb查看USB信息 linux中lsusb用来显示系统中以及连接到系统的USB总线信息的工具,lsusb会显示驱动和内部连接到你系统的设备,包括PID和VID等,以及简单的设备描述. ...

  3. Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结

    http://blog.csdn.net/zqixiao_09/article/details/51057086 设备驱动程序是操作系统内核和机器硬件之间的接口,由一组函数和一些私有数据组成,是应用程 ...

  4. linux qt 音频文件怎么打开,Qt:获取Linux中可用音频设备的列表

    我想要获取我的Linux系统上可用的所有音频设备的列表.然后我会将这个列表显示在一个组合框中,用户将从中选择用于录制/播放的设备.根据用户的选择,我将构建QAudioInput和QAudioOutpu ...

  5. usb升级linux固件,Linux USB驱动(4)---CY68013固件加载驱动

    CY68013的固件可以保存在主机上,当其被USB总线识别出来之后,可以通过驱动程序动态的加载USB固件,Linux内核中已经提供了完善的机制来加载设备的固件. 将需要加载的固件存放到/lib/fir ...

  6. linux鼠标驱动程序,Linux usb子系统(一) _写一个usb鼠标驱动

    USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配. USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动 ...

  7. USB总线-Linux内核USB3.0设备控制器之dwc3 gadget驱动初始化过程分析(五)

    1.概述 USB设备控制器(UDC)驱动的框图如下图所示,由三部分组成.第一部分是UDC驱动核心层,在drivers/usb/gadget/udc/core.c文件中实现,该层是一个兼容层,将USB ...

  8. USB总线-Linux内核USB3.0设备控制器中断处理程序分析(九)

    1.概述 USB设备枚举.请求处理.数据交互都涉及USB设备控制器中断.当有事件发生时,USB设备控制器首先将事件信息通过DMA写入到事件缓冲区中,然后向CPU发出中断,随后CPU调用中断处理函数开始 ...

  9. LINUX USB驱动开发(2)-USB驱动体系分析

    一.日常USB现象: 1.将USB设备接入电脑上,右下角弹出"发现android phone" 2.跳出对话框.提示你安装驱动程序 问题1:既然没有安装驱动,为何能知道设备是&qu ...

  10. u盘linux需要多大内存,linux下获取硬盘、内存、U盘大小及使用大小

    /* * 获取硬盘大小;内存大小;usb大小 */ #ifndef SYSINFOGET_H #define SYSINFOGET_H #include //磁盘信息 #include #includ ...

最新文章

  1. 掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序
  2. 14-运算符(比较、三元、逻辑)14-运算符(比较、三元、逻辑)
  3. java同事不写泛型_跳了一次JAVA泛型擦除的坑
  4. 解决ipfs 出现Error: can‘t publish while offline: pass `--allow-offline` to override的问题
  5. 好用的平板电脑_支架里的变形金刚让手机、电脑、平板更好用!6种角度,1秒切换...
  6. Jeecg引领企业开发潮流,开启插件开发时代,微信企业号插件(jeecg-p3-biz-qywx)首次发布
  7. php server(),php的$_SERVER参数详解(附实例)
  8. 【NOI OpenJudge】【1.2】编程基础之变量定义、赋值及转换
  9. 支持iCloud简记
  10. linux下磁盘分区方法详解
  11. expect实现自动通过堡垒机登陆
  12. 计算机系统与维护专科毕业论文,计算机系统维护毕业设计论文
  13. 梦幻诛仙linux纯端架设教程,梦幻诛仙 一键端搭建iOS安卓双端+完整后台源码+各种工具附带视频架设教程...
  14. Thymeleaf行内写法
  15. 多媒体课件是不是计算机软件,计算机应用基础与信息处理多媒体课件制作.doc...
  16. DataFrame合并
  17. MySQL-SQL注入,导入,导出
  18. 英文双引号引发的杯具
  19. 24小时制与12小时制的换算
  20. 【SpringMVC】拦截器和过滤器

热门文章

  1. linux 卸载oracle库,Linux下完美卸载 Oracle
  2. 域名被劫持应该如何处理
  3. 数据结构习题及解析二
  4. 两直线平行交叉相乘_两条直线方程相乘的几何意义 是不是说两相交直线的点的轨迹...
  5. ASP实现倒计时功能
  6. Windows Server 2012 R2添加或删除角色和功能时提示无法打开匿名级安全令牌
  7. 永久域名注册流程知识
  8. python判断火车票座位_用Python实现火车票查询(含票价版)
  9. NLP之文本分类方法之基础知识
  10. CC2650 入手资料总结(转)