2011-12-20 23 views
1

我一直在用C語言(Turbo C)在磁盤驅動器上運行12位FAT(FAT12)和16位FAT(FAT16) 16位OS MS-DOS。直接在win32api中讀取和寫入硬盤,如biosdisk或ms-dos中的absread

我能夠直接操縱扇區。

FAT32很複雜,因爲扇區像鏈接列表一樣存儲,不像FAT32以外的其他FAT。

我想直接使用32位C語言(win32 api)讀取寫入硬盤,USB磁盤。

我看到some code,它使用/ device /來訪問磁盤,在biosdisk中磁盤從0開始編號,我想。我正在操縱像頭,部門,鋼瓶......

請諮詢如何讀取硬盤直接逐個扇區或如何讀低水平寫硬盤。

我必須去彙編語言嗎?

編輯

一個場景,爲什麼我需要直接操作硬盤是我想寫一個文件保持我自己的FAT甚至從文件系統隱藏,但標誌着這些部門所使用。所以它只是隱藏了其他用戶,操作系統甚至我的文件,除了我只能訪問這些文件的程序外。這只是一點,其他人只是在玩耍而已。 :)

+3

真正的問題是爲什麼你使用古老的編譯器在16位操作系統下操作FAT16磁盤。 「這純粹是學術」的典型理由不適用於此。這幾乎是完全浪費時間。 – 2011-12-20 09:58:17

+0

另外,從操作系統的角度來看,硬盤並不是特別的東西,它只是一個文件。您可以使用相同的API調用打開和讀取/寫入硬盤。唯一的問題是,硬盤當然不是一個普通的文件。所以出於明顯的安全原因,您只能以管理員身份執行此操作。 – Damon 2011-12-20 10:16:19

+0

沒有這樣的事情在MS-DOS管理員!還有一件好事,因爲我不認爲Turbo C對嵌入清單有任何支持。 – 2011-12-20 10:31:17

回答

1

如果使用WinAPI的,那麼你使用CreateFile()API打開原始磁盤設備(見物理磁盤和卷節還有),然後使用ReadFile的()和WriteFile()方法來讀取和寫入數據。

但是,請注意,即使您是管理員,最新版本的Windows(Vista,Windows 7)也會限制您的訪問權限。我們的RawDisk產品可以讓您繞過這些限制。 RawDisk提供免費的非商業許可證。

+1

爲什麼要想繞過這些非常合理的限制?你將如何能夠做到這一點? – 2011-12-20 14:51:12

+1

@DavidHeffernan有大量需要直接訪問磁盤或鎖定文件的應用程序和使用場景(RawDisk不僅僅允許直接訪問磁盤)。如果你知道自己在做什麼,那裏沒有任何敏感的東西。在內核模式下一切都是可能的。 – 2011-12-20 15:32:43

+0

此外,我正在考慮一個驅動程序,函數,彙編代碼......這樣我就可以做到16位ms dos和硬盤的確切操作。 :) – 2012-02-14 13:43:25