跳到主要内容
外观
外观设置
显示模式
主题配色

保存在此浏览器,所有页面通用。

如何通过 VID、PID 和 Class 识别设备:Windows 与 Linux 查询教程

4,412 次浏览0 次点赞

一、先区分 USB 与 PCI 设备标识

电脑出现未知设备、缺少驱动,或需要确认外设芯片时,可以先读取硬件标识,再查询厂商资料和设备数据库。

USB 设备通常使用 VID、PID;PCI 和 PCIe 设备通常使用 Vendor ID、Device ID,在 Windows 中显示为 VEN、DEV。两类设备的标识不能混用。

设备类型 标识 含义
USB VID(Vendor ID) 厂商标识
USB PID(Product ID) 厂商分配的产品标识,需要与 VID 一起查询
PCI / PCIe VEN、DEV 厂商标识与设备标识
USB、PCI / PCIe Class 功能类别代码;不同总线采用不同的类别定义

这些标识通常能帮助确定芯片或设备系列,但不一定对应唯一的零售型号,也不能代替序列号识别某一台实物。贴牌产品、不同硬件版本和复合设备,还需要结合接口信息、产品标签及厂商驱动确认。

二、Windows:通过设备管理器查询

以下步骤适用于 Windows 10、Windows 11,也可用于具有相应界面的 Windows Server。

  1. 按 Win + R,输入 devmgmt.msc,打开设备管理器。
  2. 找到目标设备。没有正确安装驱动的设备可能位于“其他设备”下。
  3. 右键选择“属性”,进入“详细信息”。
  4. 在“属性”下拉列表中选择“硬件 ID”。
  5. 复制完整内容;如需查看类别代码,再选择“兼容 ID”。

一个设备可能有多条硬件 ID,通常按匹配精确程度排列。排查时先保留完整列表,不要只截取设备名称。

参考:Microsoft:硬件 ID 查询方法。

1. 读取 USB 的 VID 和 PID

USB 硬件 ID 的常见格式如下,字母占位符需替换为实际的十六进制数值:

USB\VID_xxxx&PID_yyyy
USB\VID_xxxx&PID_yyyy&REV_zzzz
  • VID_xxxx:USB 厂商标识。
  • PID_yyyy:产品标识。
  • REV_zzzz:设备描述符报告的版本值。

复合设备的接口还可能出现:

USB\VID_xxxx&PID_yyyy&MI_00

MI_00 表示接口编号。同一个 USB 设备可以提供多个接口,例如摄像头同时提供视频和麦克风功能;安装驱动时应确认对应的是哪个接口。

参考:Microsoft:标准 USB 标识。

2. 读取 PCI / PCIe 的 VEN 和 DEV

PCI / PCIe 设备的硬件 ID 通常具有以下结构:

PCI\VEN_xxxx&DEV_yyyy&SUBSYS_zzzzzzzz&REV_rr
  • VEN:厂商标识。
  • DEV:设备标识。
  • SUBSYS:子系统标识,进一步区分具体实现。
  • REV:修订标识。

查询驱动时,先用 VEN 和 DEV 缩小范围,再结合完整硬件 ID、电脑型号和系统版本确认。品牌机和笔记本优先使用整机厂商提供的驱动。

三、如何查看 USB Class

Windows 设备管理器中的“兼容 ID”可能包含以下格式:

USB\Class_03&SubClass_01&Prot_01

其中 Class、SubClass 和 Prot 分别表示类别、子类别和协议。不能只看 Class 就确定具体型号。

USB 类别代码 含义
0x00 设备级类别由接口描述符进一步确定
0x01 音频
0x02 通信与 CDC 控制
0x03 人机接口设备 HID,例如键盘、鼠标
0x07 打印机
0x08 大容量存储
0x09 USB 集线器
0x0A CDC 数据
0x0B 智能卡
0x0E 视频
0xEF 杂项类别
0xFF 厂商自定义类别

类别信息可能位于设备描述符或接口描述符中。看到设备级 Class 00 不表示设备异常,应继续查看各接口的类别。Windows 的“设备类 GUID”也不是这里的 USB Class 数值。

完整定义参见 USB-IF 官方类别代码表。

四、Linux:使用 lsusb 查询 USB 设备

在安装了 usbutils 的 Linux 系统中,执行:

lsusb

输出中的 ID xxxx:yyyy 分别对应 VID 和 PID,数值为十六进制。

根据实际 VID、PID 筛选设备,以下使用格式占位符:

lsusb -d VID:PID

查看详细描述符:

sudo lsusb -v -d VID:PID

将 VID:PID 替换为实际值。重点查看:

  • idVendor、idProduct:厂商与产品标识。
  • bDeviceClass:设备级类别。
  • bInterfaceClass:接口级类别。
  • bInterfaceSubClass、bInterfaceProtocol:接口子类别和协议。

还可以查看 USB 连接层级:

lsusb -t

参考:lsusb 使用手册。

五、Linux:使用 lspci 查询 PCI / PCIe 设备

在安装了 pciutils 的 Linux 系统中,执行:

lspci -nn

-nn 同时显示名称和数字标识,便于在名称不完整时继续查询。注意输出中可能同时有类别代码和厂商、设备 ID,应结合所在位置区分。

查看设备当前使用的内核驱动及相关模块:

lspci -nnk

如果只查看某个设备,可以根据输出中的总线地址筛选。例如,目标地址为 03:00.0:

lspci -nnk -s 03:00.0

Kernel driver in use 表示当前使用的驱动;Kernel modules 列出可能支持该设备的模块,不等于这些模块都已加载。

参考:lspci 使用手册。

六、查询数据库并确认驱动

获取标识后,可以使用以下数据库辅助查询:

数据库结果用于辅助判断,未收录或名称不准确时,应继续核对设备厂商资料、产品标签及官方驱动支持列表。识别出的名称可能是内部芯片型号,而不是外壳上的品牌型号。

下载驱动时,优先使用整机厂商或设备厂商官网,并确认系统版本、架构及完整硬件 ID。不要仅凭搜索到相同的 VID、PID 就安装来源不明的驱动。

七、未知设备无法读取有效 ID 怎么办

如果设备连有效的 VID、PID 都无法读取,或者提示描述符请求失败,应先排查连接和枚举问题:

  1. 更换支持数据传输的线材,排除仅充电线。
  2. 更换 USB 接口,暂时移除扩展坞或集线器后直连测试。
  3. 检查设备供电,并在另一台电脑上交叉测试。
  4. 记录设备状态、错误代码和完整硬件 ID,再进行后续排查。

VID、PID 和 Class 是识别线索。确认具体设备时,应把硬件标识、接口类别、实物信息和厂商资料结合起来判断。