由于需要,我需要通过C获取到CPU和硬盘的序列号,其中了解到用内嵌汇编的方式通过cpuid指令获取CPU的序列号。 由于对汇编一窍不通,所以上来听听大家的见解,求大牛们指个方向。
今天一直在找sata硬盘序列号的C读取方法, 找了良久, 终于找到一份可行的代码, 遂改之, 下面这段代码在as4测试通过, (此篇文章修改自: http://samba.org/~tridge/ctdb/utils/scsi_io/scsi_io.c) #include unistd.h> #include fcntl.h> #include stdio.h> #include string.h> #include errno.h> #include sys/ioctl.h> #include scsi/sg.h> #define SCSI_TIMEOUT 5000 /* ms */ static char *device = "/dev/sda"; int scsi_i...
获取IDE硬盘序列号比较容易,下面是一段示例代码: struct hd_driveid id = {0}; int fd = open("/dev/hdc", O_RDONLY); if (ioctl(fd, HDIO_GET_IDENTITY, &id) 0) { rv = errno; goto err; } id.serial_no中便是序列号了。 对于SATA硬盘,这种方法不再可行。网上查了一下,hdparm可以取到SATA硬盘序列号,但需要内核的支持,我使用2.6.16版本内核,可以取到。 因为需要用C代码获...