Linux环境下获取硬盘序列号、型号
来源:互联网 发布:碟中谍4 知乎 编辑:程序博客网 时间:2024/05/21 10:54
获取硬盘序列号型号实例程序如下:
typedef struct _HDD_INFO{ char Model[64]; char SN[64]; char md5_hash[40];} HDD_INFO, *PHDD_INFO;void FillHDDStruct(IN PHDD_INFO hddinfo){ struct hd_driveid id; char model[64]={0}; char sn[64]={0}; int fd = open("/dev/hda", O_RDONLY|O_NONBLOCK); if (fd < 0) { //try to open /dev/hda fd = open("/dev/sda", O_RDONLY|O_NONBLOCK); if(fd < 0) { perror("detecting harddisk"); return; } } if(!ioctl(fd, HDIO_GET_IDENTITY, &id)) { //Build HDD Model RTrim(id.model, 40, model); n = strlen(model); strcpy(hddinfo->Model, model); //Build SerialNumber LTrim(id.serial_no, sn); n = strlen(sn); strcpy(hddinfo->SN, sn); }}
在上面的程序中,最关键的步骤就是ioctl(fd, HDIO_GET_IDENTITY, &id)。
1. 什么是ioctl
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:
int ioctl(int fd, ind cmd, …);
其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和cmd的意义相关。
ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数来控制设备的I/O通道。
阅读全文
0 0
- Linux环境下获取硬盘序列号、型号
- linux下怎样查看硬盘型号和硬盘序列号
- VC6获取硬盘序列号、型号、修订版本号
- linux下获取硬盘的序列号信息
- linux下获取CPUID,MAC地址,硬盘序列号,主板序列号
- linux下获取CPUID,MAC地址,硬盘序列号,主板序列号
- linux 下查看硬件信息(mac,IP地址,硬盘型号,序列号等)
- JSP利用JNI获取硬盘信息(型号,序列号,容量...)
- linux c 获取硬盘序列号
- Linux下获取CPUID、硬盘序列号与MAC地址
- Linux下获取CPUID、硬盘序列号与MAC地址
- Linux下获取CPUID、硬盘序列号与MAC地址
- linux下IDE硬盘序列号的获取方法
- 查看LINUX系统下服务器型号,序列号
- linux下查看硬盘型号等信息
- linux下查看硬盘型号等信息
- linux下查看硬盘型号等信息
- 驱动下如何获取硬盘序列号
- Hbase版本对Hadoop版本支持
- input的小技巧
- 跟我一起学linux基础(第三天)
- 射频频段
- String格式转换成Data格式
- Linux环境下获取硬盘序列号、型号
- java中volatile关键字的含义
- 第1章 欢迎进入Node.js世界
- java.sql.SQLException: Data truncated for column 'myprice' at row 1
- ssh整合是出现异常: getFlushMode is not valid without active transaction
- Linux,Window之间文件传输-NFS,Samba,SSH
- 美团CODEM 初赛B 景区路线规划 概率DP
- POJ 3468 线段树 解题报告
- CentOS7上 pip install MySQL-python 安装失败(error: command 'gcc' failed with exit status 1)的解决办法