获得IDE硬盘C的序列号(如何获取电脑硬盘序列号)

小编:饿狼 更新时间:2022-08-28

/* 获得IDE硬盘C的序列号 */

/* Hard Disk Serial Number */

# include

# include

# include

# include

# include

char *getascii (unsigned int in_data [],int off_start,int off_end);

void main(void)

{

unsigned int dd[256];

/* 磁盘数据 */

unsigned int dd_off;

/* 磁盘数据偏移地址 */

while(inp(0x1F7)!=0x50)

/* 等待控制 */

outp(0x1F6,0xA0);

/* 得到磁盘信息 */

outp(0x1F7,0xEC);

/* 得到磁盘数据信息 */

while(inp(0x1F7)!=0x58)

/* 等待数据 */

for(dd_off=0;dd_off!=256;dd_off++)

/* 读磁盘扇区 */

dd [dd_off]=inpw(0x1F0);

printf("The Serial Number Hard Disk [C] is %s",getascii(dd,10,19));

}

char *getascii (unsigned int in_data [],int off_start,int off_end)

{

static char ret_val [255];

int loop,loop1;

for(loop=off_start,loop1=0;loop<=off_end;loop++)

{

ret_val[loop1++]=(char)(in_data[loop]/256);

/* 得到高位地址字节 */

ret_val[loop1++]=(char)(in_data[loop]%256);

/* 得到低位地址字节 */

}

ret_val[loop]='\0';

/* 确认以'0'结束 */

return(ret_val);

}