3

我需要克隆 CF 卡(具有一定数量的自定义功能,无法使用现成的克隆工具)。我需要一个合适的图像才能工作 - 我不能只复制所有文件。我想用c#为此编写一个程序,但我不知道从哪里开始。

谁能指出我的基本样本或其他东西让我朝着正确的方向前进?

4

3 回答 3

1

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

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

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

于 2010-02-11T20:53:12.030 回答
1

您使用相同的 API 来读取和写入从 Windows 中的卷中读取原始数据,用于普通文件 io。不同之处在于公开电话。

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

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

有关详细信息,请参阅CreateFile文档。寻找部分

物理磁盘和卷

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

于 2010-02-11T20:54:46.817 回答
0

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

于 2010-02-11T20:56:41.087 回答