2014-09-29 36 views
-2

我已經找到一種方法從驅動器讀取,使用張貼達里爾布拉滕方法 How do I read a disk directly with .Net?如何直接使用.Net寫入磁盤?

現在我試圖找到一種方式來驅動器上寫的,在他的方法寫方法未實現。任何人都可以提出一種做法嗎?

謝謝你的時間。

+0

導入和使用'WriteFile()'函數這裏使用的ReadFile()')。不要回避,如果你有任何問題,你的代碼這樣做... – 2014-09-29 08:20:34

+0

我得到一個流是不可寫的,甚至認爲我設置處理程序GENERIC_READ | GENERIC_WRITE和Filestream到FileAccess.ReadWrite。任何想法,爲什麼我得到這個錯誤? – 2014-09-29 11:53:37

回答

0

只需使用WriteFile P/Invoke函數:

[DllImport("kernel32.dll", SetLastError=true)] 
static extern bool WriteFile(
    IntPtr hFile, 
    byte[] lpBuffer, 
    uint nNumberOfBytesToWrite, 
    out uint lpNumberOfBytesWritten, 
    IntPtr lpOverlapped); 

WriteFile更換ReadFile電話,那是很容易的。請記住:

  • 你有使用CreateFile的手柄具有write訪問
  • 你必須寫每塊字節;塊大小必須是扇區大小的倍數。即如果你只想寫1個字節,你必須讀取整個扇區,修改內存中的字節,然後寫回整個扇區
+0

我已經將句柄設置爲GENERIC_READ | GENERIC_WRITE和Filestream FileAccess.ReadWrite,但是我得到了「流不可寫」。錯誤。 – 2014-09-29 10:08:36