2014-11-06 72 views
-4

我使用WriteFile函数在磁盘上写入扇区。 WriteFile函数如何与驱动器或磁盘上的其他数据交互?我如何写文件而不会意外删除另一个文件?操作系统可能会意外删除我的文件吗?WriteFile函数如何与磁盘上的另一个数据交互?

+0

需要上下文。给我们一些代码来展示你如何获得你传递给'WriteFile'的句柄。你在做什么或者是无害的,或者是非常危险的。但是除非您向我们展示您是如何使用它,否则我们无法分辨。 – 2014-11-06 17:31:36

回答

2

你确实在磁盘上写了扇区而不是磁盘上的文件?一些背景信息会非常棒,因为如果你真的写入了原始磁盘表面,而不是通过操作系统写入磁盘上的文件,使用fopen(),fwrite()或者甚至更高级别的函数更高的,那么你应该这样做是有原因的。我们是否可以询问究竟是什么原因?

如果您在写磁盘扇区时不考虑磁盘具有哪种文件系统,则所有投注都将关闭。假设操作系统允许的话,没有什么可以保护您覆盖重要的磁盘数据或覆盖您的文件的操作系统。

我已经做到了这一点,以访问嵌入式系统上的唯一联系人“外部世界”(PC)的唯一联系人是一个自定义的黑客攻击的USB大容量存储接口。而且即使这样,我每次都必须这样做时才打破了冷汗 - 如果我的代码意外地写入了PC的硬盘,那么它可能已经在硬盘上安装操作系统并且所有文件写给它。

4

当您直接写入磁盘时,您完全绕过文件系统。除非您重新实现了读取和尊重文件系统所需的功能,否则您可能会破坏该磁盘。您可能不仅会覆盖其他文件,而且很可能会覆盖元数据 - 即描述目录和文件的结构和位置,其属性等的信息。

如果磁盘已经包含一个正在运行的文件系统,并且您不想打扰该文件系统,那么几乎没有任何情况可以想象到直接写入磁盘的意义何在。如果你想写文件到磁盘上,就这么做。我怀疑你在某个地方的推理中犯了一个错误,导致你相信你应该直接写入磁盘。

+0

我看不到'WriteFile()'应该直接写入磁盘。你的回答可能只是混淆了他们实际在做的事情。 – 2014-11-06 18:23:42

+0

这并不是说他正在使用WriteFile,而是他正在说他正在磁盘上写*扇区* – PkP 2014-11-06 18:24:44

+0

@πάνταῥεῖ混淆是你的想法。我明白这个问题很好。 – 2014-11-06 18:29:21

相关问题