【问题标题】:How to write bytes to disc in C? [closed]如何在 C 中将字节写入磁盘? [关闭]
【发布时间】:2014-03-09 14:25:42
【问题描述】:

我想编写一个程序,将磁盘格式化为新格式(不是 NTFS 或 FAT32)并且可以读取和写入磁盘,为了做到这一点,我必须有一种方法可以将单个字节写入一张光盘(不创建文件)。我该怎么做?

编辑:我找到了this。但是我不确定是否像 Eli Bendersky 在第一个答案中所说的那样使用 CreateFile() (按投票顺序组织时)让你一次写一个字节(甚至一个位),还是你必须写完整的扇区一次。

回答:由于问题已关闭,我无法发布答案,因此我将在此处回答。您不需要 API 函数来执行此操作。您需要做的就是像打开任何其他文件一样打开磁盘。像这样:

int hFile;
hFile=open("/dev/sdb",0_RDWR);

【问题讨论】:

  • 嗨艾萨克;我怀疑这个问题会继续吸引反对票,主要是因为它没有提供任何努力的例子(即,您阅读了哪些文档,您尝试了哪些代码,以及到目前为止知道的内容。)您最好的选择是做一些谷歌搜索,看看你发现了什么。
  • Windows 将阻止任何类型的直接硬件访问磁盘。它将希望您对所有内容都使用 Win API 调用。驱动程序是一种可行的方法,但是编写起来非常复杂。您可以尝试使用现有的:eldos.com/rawdisk 另外,看看这个问题:stackoverflow.com/a/8808596/656243
  • 我可以使用哪些 API 调用?
  • 看看这个:stackoverflow.com/a/8541873/656243 .. 他们说要使用CreateFile()。此外,微软还发布了这篇关于限制的知识库文章:support.microsoft.com/kb/942448
  • 值得一提的是,这是一件真的可怕的事情。您不应该使用您关心的卷来执行此操作,例如您当前的 PC。目标硬盘上应该没有有价值的数据。

标签: c disk


【解决方案1】:

您的程序必须直接与驱动程序对话,因为您将绕过文件系统。

【讨论】:

  • 如何编写驱动程序?驱动程序有特殊的 C 函数吗?
  • 我的程序必须与哪个驱动程序通信?
  • 已接受?我看不出这个答案将如何帮助任何未来的访问者。
  • 如何在我自己的文件系统上使用这些调用?它们仅适用于 NTFS、FAT32 和此类文件系统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多