【发布时间】: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。目标硬盘上应该没有有价值的数据。