2007年5月3日星期四

如何读取硬盘的序列号

    硬盘的序列号只能采用对硬盘控制器直接操作的方式进行读取,也就是说只能采用 CPU的I/O指令操作硬盘控制器,读取的方法如下面的C语言程序所示:
     static int WaitIde()
     {
        int al;
        while ((al=inp(0x1F7)) >=0x80) ;
        return al;
    }
    static void ReadIDE()
    {
        int al;
        int i;
        WORD pw[256];
        WaitIde();
        outp(0x1F6,0xA0);
        al = WaitIde();
        if ((al&0x50)!=0x50)
            return;
        outp(0x1F6,0xA0);
        outp(0x1F7,0xEC);
        al = WaitIde();
        if ((al&0x58)!=0x58)
            return;
        for (i=0;i< 256;i++)
            pw[i] = inpw(0x1F0);
    } 
 

张志强
2007-05-03

没有评论: