同意楼上 硬盘的序列号只能采用对硬盘控制器直接操作的方式进行读取,也就是说只能采用 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); }
硬盘的序列号只能采用对硬盘控制器直接操作的方式进行读取,也就是说只能采用
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);
}