linux c语言获取usb设备号,Linux C ++下的USB驱动器序列号

本文介绍了在Linux环境下,如何使用C++语言获取USB存储设备(SCSI连接磁盘)的序列号。通过讲解不同类型的驱动器(如ATA和SCSI),并提供相关代码示例,演示了如何利用ioctl调用和SCSI查询命令获取SCSI设备的序列号。同时提到了部分设备可能存在的问题,如序列号缺失或不标准。
摘要由CSDN通过智能技术生成

小编典典

我将尝试总结有关在Linux上进行存储驱动器序列号检索的经验。

我假设您要 存储设备 标识的序列号(按照SCSI规范)而不是 USB设备 的序列号(按照Device

Descriptor下的USB规范),这两个是不同的实体。

注意!

大多数设备倾向于在USB控制器中实现序列号,而内部SCSI磁盘的序列号未实现。

因此,如果要唯一地标识USB设备,最好的方法是从设备描述符(USB规范)创建字符串,例如

VendorId-ProductId-HardwareRevision-SerialNumber

。在下面,我将描述如何检索存储驱动器的SN ,按要求。

驱动器分为两类(实际上更多,但让我们简化一下):类ATA(hda,hdb …)和类SCSI(sda sdb …)。USB驱动器属于第二类,它们称为

SCSI连接磁盘

。在这两种情况下,都可以使用ioctl调用来检索所需的信息(在我们的情况下为序列号)。

对于 SCSI设备(包括USB驱动器)

,Linux通用驱动程序及其API记录在tldp上。

SCSI设备上的序列号可在重要产品数据(简称:VPD)中找到,并且可以使用SCSI查询命令检索。sdparm是linux中一个可获取此VPD的通用实用程序:

> yum install sdparm

> sdparm --quiet --page=sn /dev/sda

Unit serial number VPD page:

3BT1ZQGR000081240XP7

请注意,并非所有设备都具有该

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值