函式名,本函式用來對驅動器作一定的操作。
這個函式的原理是利用BIOS中斷13H直接操作磁碟,所以在windows下可能無法執行!
基本介紹
- 外文名:biosdisk
- 功 能:軟硬碟I/O
- 函式名:biosdisk
- 頭檔案:dos.h或bios.h
函式名,功 能,頭檔案,原型,參數及說明,注意事項,
函式名
biosdisk
功 能
軟硬碟I/O
頭檔案
dos.h或bios.h
原型
int biosdisk(int cmd, int drive, int head, int track, int sector
int nsects, void *buffer);
參數及說明
本函式用來對驅動器作一定的操作,cmd為功能號, drive為驅動器號(0=A,1=B,0x80=C,0x81=D,0x82=E等).head為磁頭 track為磁軌 sector為扇區 nsects為要讀或寫的扇區數
cmd可為以下值:
0 重置軟磁碟系統.這強迫驅動器控制器來執行硬復位.忽略所有其它參數.
1 返回最後的硬碟操作狀態.忽略所有其它參數
6 格式化一個磁軌,並置壞扇區標誌。
7 格式化指定磁軌上的驅動器開頭。
8 返回當前驅動器參數,驅動器信息返回寫在buffer中(以四個位元組表示)。
9 初始化一對驅動器特性。
10 執行一個長的讀,每個扇區讀512加4個額外位元組
11 執行一個長的寫,每個扇區寫512加4個額外位元組
12 執行一個磁碟查找
13 交替磁碟復位
14 讀扇區緩衝區
15 寫扇區緩衝區
16 檢查指定的驅動器是否就緒
17 覆核驅動器
18 控制器RAM診斷
19 驅動器診斷
20 控制器內部診
函式返回由下列位組合成的狀態位元組:
0x00 操作成功
0x01 壞的命令
0x02 地址標記找不到
0x04 記錄找不到
0x05 重置失敗
0x07 驅動參數活動失敗
0x09 企圖DMA經過64K界限
0x0B 檢查壞的磁碟標記
0x10 壞的ECC在磁碟上讀
0x11 ECC校正的數據錯誤(注意它不是錯誤)
0x20 控制器失效
0x40 查找失敗
0x80 回響的連線失敗
0xBB 出現無定義錯誤
0xFF 讀出操作失敗
注意事項
這個函式的原理是利用BIOS中斷13H直接操作磁碟,所以在windows下可能無法執行!
您必須先繞過作業系統或在實模式(如DOS)下運行.附錯誤時的提示視窗內容:應用程式已試著直接訪問硬碟,但仍無法支持,..云云......
程式例:
#include <bios.h>
#include <stdio.h>
int main(void)
{
int result;
char buffer[512];
printf("Testing to see if drive a: is ready\n");
result = biosdisk(4,0,0,0,0,1,buffer);
result &= 0x02;
(result) ? (printf("Drive A: Ready\n")) :
(printf("Drive A: Not Ready\n"));
return 0;
}