gpt4 book ai didi

c - C 语言的低级编写

转载 作者:行者123 更新时间:2023-12-04 10:12:55 24 4
gpt4 key购买 nike

如何使用 C 编程语言写入硬盘上的任何块?

a question关于写MBR但它并没有太多地涵盖 C 方面。

由于文件描述符 - 正如这个词所说 - 用于文件,我想在这种情况下无法使用它们。 Low-level I/O包含在 C 标准库中的也使用文件描述符实现。

更准确地说:
这个问题是关于写入 HDD 块而不是文件(独立于操作系统)。

上述问题的答案基本上建议使用 dd (coreutils) 在 UNIX 系统上。这就是为什么我在 C 中寻求一种方法。也许引导加载程序( GRUB )和引导扇区病毒使用不同的技术?

我想更改文件描述符内的实际指针不是合法的方式。

问题和限制:
我知道有一些方面需要牢记,例如

  • 某些操作系统限制对卷的直接访问(例如 Windows)
  • 写入错误以及将错误数据写入某些块
    可能会导致文件系统损坏(硬盘上的数据丢失)。
  • 防病毒软件可能会将其标记为可疑代码。

  • 这个问题更多的是理论性的。

    最佳答案

    C 语言可以访问带有函数的文件 fopen/fclose/fread/fwrite等等。但是在语言中没有块设备这样的东西(就此而言,甚至不是设备)。

    另一方面,POSIX 具有低级功能 open/close/read/write访问文件,并有块设备的概念。只要您遵循一些简单的规则(主要是块对齐)并且知道设备的名称( /dev/xxx ),就可以(小心)将这些函数用于块设备。

    如果您在非 POSIX 系统中,例如 Windows,那么操作系统将有特定的方式来处理块设备访问。例如,在 Windows 中,您可以使用 CreateFile具有设备名称的函数 \\.\PhysicalDrive0 , \\.\C:或诸如此类。

    关于c - C 语言的低级编写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655267/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com