【发布时间】:2011-12-28 11:23:13
【问题描述】:
如何使用 C 编程语言写入 HDD 上的任何块?
a question 有关于编写 MBR 的内容,但它并没有涵盖 C 方面的内容。
由于文件描述符 - 正如这个词所说 - 用于文件,我想在这种情况下没有办法使用它们。 C 标准库中包含的Low-level I/O 也是用文件描述符实现的。
更准确地说:
这个问题是关于写入硬盘块而不是文件(独立于操作系统)。
上述问题的答案基本上建议在 UNIX 系统上使用 dd (coreutils)。这就是为什么我在 C 中寻求一种方法。也许引导加载程序 (GRUB) 和引导扇区病毒使用不同的技术?
我猜想改变文件描述符中的实际指针不是合法的方式。
问题和限制:
我知道有些方面需要牢记,例如
- 某些操作系统限制对卷的直接访问(例如 Windows)
- 写入错误以及将错误数据写入某些块 可能会导致文件系统损坏(HDD 上的数据丢失)。
- 防病毒软件可能会将其标记为可疑代码。
这个问题更偏理论。
【问题讨论】:
-
openwatcom.org/index.php/… 这是在 DOS 中的操作方法。由于您没有提出具体问题,因此很难给出除以下之外的答案:“不,没有用于写入未格式化硬盘扇区的标准 C api。为什么会有一个?”
-
那将是一个非常令人满意的答案,但是由于您没有回答:谢谢;)。我必须补充一句:“为什么会有一个?”严重地?也许我想用 C 来改变 MBR?有什么问题?