今天太無聊了,突然想直接使用C語言讀取硬盤看看,看了下網上有使用biosdisk函數的,但是Windows下這個函數已經沒有了(VS2005),後來在這個地方(http://www.cqzol.com/programming/c/200803/81345.html)找到了一個方法,利用CreateFile和ReadFile函數來操作。(WriteFile可以直接寫扇區,太危險,我就不實驗了)。利用他所講到的方法,我寫了如下程序:
dev變量表示邏輯磁盤號(如果換成具體的文件名就成了對文件的操作了,比如我註釋掉的boot.bin是《自己動手寫操作系統》那本書的第一個asm程序用NASM編譯出來引導程序)。
例子中是對C盤的頭512個字節進行讀取,其結果爲:
然後對於boot.bin的結果是:
這512個字節我使用UltraEdit查看也是這樣,可見是沒有問題的。
WriteFile跟ReadFile類似,不要輕易用在對硬盤的操作上。