因爲C語言強大的訪問硬件的函數 造就了一批又一批的優秀的程序員
int biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer);
cmd:操作命令
0:表示復位磁盤
1:表示返回上次磁盤服務的狀態
2:表示讀制定扇區數
3:表示寫制定扇區數
4:表示校驗制定扇區數
5:表示格式化制定磁道(包含壞區表的緩衝區)
6:表示格式化制定的磁道,設置壞扇區
12:表示進行磁盤尋道
.....
drive:指定所需的驅動器號
0:表示驅動器號A,1:表示驅動器號B,0x80:表示驅動器號C,0x81表示驅動器號D,0x82表示驅動器號E以此類推
後面幾個網上都能查到
代碼如下:
#include "bios.h"
#include "stdio.h"
int main(void)
{
int cmd,drive,head,track,sector,nsects;
int result;
static char buffer[512];
cmd=12;
drive=0x80;
head=0;
track=0;
sector=1;
nsects=1;
result=biosdisk(cmd,drive,head,track,sector,nsects,buffer);
//對驅動器號是C的進行磁盤尋道
if (result)
{
printf("Floppy driver is checking...");
}
else
{
printf("Floppy find error %d",track);
}
getch();
return 0;
}
可是在WindowsXP上卻無法訪問硬件 那是因爲Windows屏蔽了對硬件直接訪問的功能 在硬件與操作系統間 加了一層硬件抽象層HAL 之後將用戶與系統分離開來 互不影響 管態和目態不能訪問 雖然說是可以用訪管中斷的 可是由於硬件抽象層 使他們之間無法訪問