在*BSD上读出硬盘硬件信息的方法
读了一天多的原码,跑了不少弯路,终于找到方法了,苦啊~~~a.out 0 0 得到第一个ide的主盘的信息 a.out 0 1 得到副盘的信息
a.out 1 0 得到第二个ide的主盘的信息 a.out 1 1 得到副盘的信息
以次类推
代码:
--------------------------------------------------------------------------------
/* get atadisk serial.no for *BSD* Copyright (C) 20CN Security Group 2005. * By NetDemon* http://www.20cn.net/ */ #include #include #include #include #include #include intmain(int argc, char **argv){ struct ata_cmd iocmd; int fd ,dev; if ((fd = open("/dev/ata", O_RDWR)) < 0){ printf("device not found \n" ); exit(1); } if (argc < 3){ printf("usage: %s channel device \n", argv); exit(1); } bzero(&iocmd, sizeof(struct ata_cmd)); dev = atoi(argv); iocmd.channel = atoi(argv); iocmd.device = dev; iocmd.cmd = ATAGPARM; if (ioctl(fd, IOCATA, &iocmd) < 0){ printf("IO error \n"); exit(1); } printf("device model %.40s\n", iocmd.u.param.params.model); printf("serial number %.20s\n", iocmd.u.param.params.serial); printf("firmware revision %.8s\n", iocmd.u.param.params.revision);}
--------------------------------------------------------------------------------
在ata_params 还有相当多的信息,包括磁盘转速,各种支持等等,见 sys/ata.h
你是在残害我哎,多少年没看C了…… 20cn……哪年的东西
页:
[1]