在Linux下获取物理硬盘序列号

在Linux下获取物理硬盘序列号


编号:QA004753
建立日期: 2003年11月8日 最后修改日期:2003年11月8日
所属类别:

佚名:
    操作系统:Redhat 7.2 Linux 内核2.4.18
    编程工具:gcc
    问题:我希望能在Redhat 7.2 Linux 内核2.4.18下获取物理硬盘序列号(不是逻辑盘)尝试了如下代码(用gcc编译通过),然而运行时,以失败告终:"Segment Fault"向你们请求帮助,十分感谢!
    //========================================================
    
#include <stdio.h>
    
#include <stdlib.h>
    
#include <unistd.h>
    
#include <string.h>
    
#define extern
    
#include <asm/io.h>
    
    
char *getascii (unsigned int in_data [], int off_start, int off_end);
    
    
static int WaitIde()
    
{
    
int al;
    
    
while ((al=inb(0x1F7))>=0x80) ;
    
return al;
    
}
    
    
static void ReadIDE()
    
{
    
int al;
    
int i;
    
WORD pw[256];
    
    
WaitIde();
    
outb(0xA0,0x1F6);
    
al = WaitIde();
    
if ((al&0x50)!=0x50) return;
    
    
outb(0xA0,0x1F6);
    
outb(0xEC,0x1F7);
    
al = WaitIde();
    
if ((al&0x58)!=0x58) return;
    
    
for (i=0;i<256;i++) {
    
pw[i] = inw(0x1F0);
    
}
    
}
    
    
int main (void)
    
{
    
ReadIDE();
    
}
    
//========================================================
    

回答:

    在ReadIDE的开始处加上
    ioperm(0x1f0, 16, 1);

此问题由cngb回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 磁盘、文件和目录, disk, file, fat, directory, folder

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值