linux 磁盘序列号修改,linux 获取硬盘序列号解决思路

linux 获取硬盘序列号

找了好久,找到下面代码:

// a.cpp

//在Linux下获取硬盘物理系列号的程序

#include 

#include 

#include 

#include              /* ioperm() */

#include              /* outb(), inb() */

//#include  //推荐不要使用这个asm/io.h

#define _DEBUG_ 1

/* get serial number */

int gethddsn(char *ide)

{

unsigned int ide_info[257];

unsigned int info_off;

unsigned long loop2 = 0;

int loop, loop1 = 0;

if( ioperm(0x1F6, 1, 1) ) {

perror("ioperm");

//exit(-1);

return 0;

}

outb(0xA0, 0x1F6);

if( ioperm(0x1F7, 1, 1) ) {

perror("ioperm");

//exit(-1);

return 0;

}

outb(0xEC, 0x1F7);

do {

if( ioperm(0x1F7, 1, 1) ) {

perror("ioperm");

//exit(-1);

return 0;

}

}while( inb(0x1F7) != 0x58 && loop2++ 

for( info_off = 0; info_off != 256; info_off++) {

if( ioperm(0x1F0, 2, 1) ) {

perror("ioperm");

//exit(-1);

return 0;

}

ide_info[info_off] = inw(0x1F0);

}

for(loop = 10, loop1 = 0; loop <= 19; loop++)

{

ide[loop1++] = (char)(ide_info[loop]/256);

ide[loop1++] = (char)(ide_info[loop]%256);

}

ide[loop1] = 0x00; //字符串结束

if( loop1 > 20 )

{

printf("*hdsn too len:[%d] error!*\n", loop1);

return 0;

}

return 1;

}

#if _DEBUG_

int main(void)  //print hard disk number

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值