C語言中訪問硬件函數

因爲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 之後將用戶與系統分離開來 互不影響  管態和目態不能訪問 雖然說是可以用訪管中斷的 可是由於硬件抽象層 使他們之間無法訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章