我想知道磁盤訪問是如何工作的。例如,我如何查看/修改行業?如果有幫助,我針對Windows。 感謝直接訪問硬盤?
直接訪問硬盤?
回答
This page似乎對這個問題的一些相關信息:
您可以打開物理或邏輯 驅動器使用CreateFile() 應用程序編程接口 (API)與這些設備名稱提供 您有適當的權限 權利到驅動器(也就是說,您必須是管理員 )。您必須使用 CreateFile()FILE_SHARE_READ 和FILE_SHARE_WRITE標誌來獲得對驅動器的訪問 。
一旦打開了邏輯或物理驅動器 ,就可以對整個驅動器上的數據執行 直接I/O。執行直接磁盤 I/O時,您必須在 設備的扇區大小的多個扇區邊界和 中尋找,讀取和寫入。呼叫使用 IOCTL_DISK_GET_DRIVE_GEOMETRY得到 每個磁道的每扇區字節, 扇區數,扇區 DeviceIoControl的()等 來回,這樣就可以計算 大小,你將需要的緩衝區。
的documentation of CreateFile還提供了一些線索:
您可以使用CreateFile函數打開一個物理磁盤驅動器或卷, 它返回一個直接訪問存儲設備(DASD)處理,可以是與DeviceIoControl函數一起使用的 。這使您可以直接訪問 磁盤或卷,例如磁盤元數據如分區 表。但是,此類訪問還會將磁盤驅動器或磁盤暴露給潛在的數據丟失,因爲使用此機制對磁盤進行不正確寫入可能會使其內容無法訪問到 操作系統。爲了確保數據的完整性,請務必熟悉DeviceIoControl以及其他API如何以 的行爲與直接訪問句柄不同,而不是使用文件系統句柄。
STXXL可能是你的興趣:使用Win32的的CreateFile()函數(如驅動器C)或物理驅動器 http://stxxl.sourceforge.net/
您可以打開一個邏輯卷。使用返回的句柄,您可以根據需要讀取和寫入扇區。 該頁面在MSDN應該讓你開始:CreateFile Function
我不承擔責任的損壞引起的:-)
我得到了@user想要直接*訪問驅動器的印象。 – 2010-04-24 03:44:19
@John:你的意思是說他可能想完全繞過Windows? 打開物理驅動器時,您可以直接訪問它的內容......它不是焊接你自己的SATA控制器,但它比人們通常使用的級別要低:-) 我很確定Windows驅動程序開發工具包有磁盤驅動程序的樣本(如果有幫助的話)。 – 2010-04-24 12:28:06
- 1. 直接訪問硬盤
- 2. 訪問硬盤
- 3. 硬盤上文件的直接訪問和更新部分
- 4. Linux:從C程序直接訪問硬盤(不含任何FS)
- 5. 谷歌硬盤直接鏈接
- 6. 直接連接到主碎片以訪問MongoDB中的硬盤集合
- 7. ggplot2:直接保存到硬盤
- 8. Python - 直接從硬盤讀取
- 9. 訪問硬盤的未分配空間
- 10. 使用Wamp訪問硬盤數據
- 11. 谷歌雲端硬盤訪問權限
- 12. 手動獲得SSH訪問回來的嵌入式系統(直接硬盤訪問可能)
- 13. 直接訪問OSX
- 14. 直接訪問SQLite3?
- 15. 直接HDFS訪問
- 16. CvCreateMatND直接訪問
- 17. 直接URL訪問
- 18. 有沒有辦法直接在Python中訪問硬件?
- 19. 直接堆棧和堆訪問;虛擬或硬件級別?
- 20. 如何從啓動盤訪問硬盤驅動器?
- 21. 從直接訪問Wordpress訪問功能
- 22. 選擇針對直接磁盤訪問的安全DBMS
- 23. PHP避免直接訪問
- 24. 多路訪問直接ByteBuffer
- 25. 直接訪問linux framebuffer - copyarea
- 26. 直接訪問數據庫
- 27. C++直接訪問導線
- 28. 直接內存訪問
- 29. 直接FTP訪問Heroku?
- 30. 雲託管 - 直接訪問
它是如何相關的? – 2010-04-24 06:14:49