2014-09-29 58 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