使用.NET创建磁盘映像

3
我需要克隆CF卡(带有一定量的自定义功能,无法使用现成的克隆工具)。我需要一个适合这项工作的正确的映像文件 - 我不能只复制所有文件。我想用c#编写一个程序,但我不知道从何开始。
是否有人可以为我指出一个基本示例或者其他能够让我朝着正确方向前进的东西?

这是使用USB读卡器还是IDE适配器?无论哪种方式,我相信你需要找到一些未经管理的API。大多数硬件细节在.Net中都被抽象化了。 - Matthew Whited
这是使用USB读卡器。我希望能在.NET中做些什么,而不是去使用一些古怪的API。 - Jon B
3个回答

1

在Windows中,您使用相同的API来读取和写入卷中的原始数据,就像普通文件io一样。区别在于打开调用。

CreateFile("\.\M:", GENERIC_READ | GENERIC_WRITE, ...)

将打开驱动器M:以进行原始读写。我从未尝试过,但您可能可以通过将“\.\M:”作为C#中的流打开函数之一的文件名传递,它可能会起作用。但是,您最好至少使用非托管代码编写项目的文件io部分。

有关更多信息,请参见CreateFile文档。查找以下部分

物理磁盘和卷

对磁盘或卷的直接访问受到限制。有关更多信息,请参见帮助和支持知识库中的“更改文件系统和存储堆栈以限制Windows Vista和Windows Server 2008中的直接磁盘访问和直接卷访问”的部分


0

你不能使用像这样的程序吗:http://xedit.smike.ru/?

否则,你必须退回到Win32 API调用,例如CreateFile(例如,对于驱动器G,请使用"\.\g:"作为文件名参数)。

还需要查看ReadFile / WriteFile,SetFilePointer和DeviceIoControl函数。


0

您需要使用Pinvoke来调用块模式io。为什么您不能只是复制文件呢?


文件系统必须保留以供专有设备使用。 - Jon B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接