我使用WriteFile函数在磁盘上写入扇区。 WriteFile函数如何与驱动器或磁盘上的其他数据交互?我如何写文件而不会意外删除另一个文件?操作系统可能会意外删除我的文件吗?WriteFile函数如何与磁盘上的另一个数据交互?
回答
你确实在磁盘上写了扇区而不是磁盘上的文件?一些背景信息会非常棒,因为如果你真的写入了原始磁盘表面,而不是通过操作系统写入磁盘上的文件,使用fopen(),fwrite()或者甚至更高级别的函数更高的,那么你应该这样做是有原因的。我们是否可以询问究竟是什么原因?
如果您在写磁盘扇区时不考虑磁盘具有哪种文件系统,则所有投注都将关闭。假设操作系统允许的话,没有什么可以保护您覆盖重要的磁盘数据或覆盖您的文件的操作系统。
我已经做到了这一点,以访问嵌入式系统上的唯一联系人“外部世界”(PC)的唯一联系人是一个自定义的黑客攻击的USB大容量存储接口。而且即使这样,我每次都必须这样做时才打破了冷汗 - 如果我的代码意外地写入了PC的硬盘,那么它可能已经在硬盘上安装操作系统并且所有文件写给它。
当您直接写入磁盘时,您完全绕过文件系统。除非您重新实现了读取和尊重文件系统所需的功能,否则您可能会破坏该磁盘。您可能不仅会覆盖其他文件,而且很可能会覆盖元数据 - 即描述目录和文件的结构和位置,其属性等的信息。
如果磁盘已经包含一个正在运行的文件系统,并且您不想打扰该文件系统,那么几乎没有任何情况可以想象到直接写入磁盘的意义何在。如果你想写文件到磁盘上,就这么做。我怀疑你在某个地方的推理中犯了一个错误,导致你相信你应该直接写入磁盘。
我看不到'WriteFile()'应该直接写入磁盘。你的回答可能只是混淆了他们实际在做的事情。 – 2014-11-06 18:23:42
这并不是说他正在使用WriteFile,而是他正在说他正在磁盘上写*扇区* – PkP 2014-11-06 18:24:44
@πάνταῥεῖ混淆是你的想法。我明白这个问题很好。 – 2014-11-06 18:29:21
- 1. 如何在一个磁盘上存储最新数据的分区和另一个磁盘上的历史数据?
- 2. 主磁盘与交换磁盘
- 3. MongoDB数据库中的数据如何存储在磁盘上?
- 4. PHP另一个磁盘
- 5. 如何用azure虚拟机上的附加数据磁盘替换os磁盘
- 6. 如何在保护模式下与磁盘或光盘进行交互?
- 7. gevent如何与threading.local数据交互?
- 8. 如何使HTML与数据库交互?
- 9. Apache Cassandra磁盘上的数据存储
- 10. SQLite:ON磁盘与内存数据库
- 11. 与数据库交互的函数的最佳做法
- 12. 如何从另一个Emacs Lisp函数调用具有前缀参数的交互式Emacs Lisp函数?
- 13. WriteFile函数“冻结”
- 14. 如何测试函数W /复杂的数据交互
- 15. Azure磁盘数据丢失
- 16. 将大型数据集PCA保存在磁盘上供以后与有限的磁盘空间一起使用
- 17. 使用另一个函数的数据
- 18. powershell tilde /将用户数据移动到另一个磁盘后的桌面
- 19. 如何调用另一个函数内的一个函数Jquery
- 20. 如何将JSON数据存储在磁盘上?
- 21. 如何在磁盘上布置B-Tree数据?
- 22. 数据库记录如何存储在磁盘上?
- 23. 数据如何存储在磁盘上? - EFI GUID
- 24. 如何通过pandas将csv写入ubuntu的另一个磁盘?
- 25. 如何将对象数据源数据保存到磁盘?
- 26. 与数据库交互的Liquibase
- 27. 与codeigniter和backbone.js的数据库交互
- 28. JSF与数据库的交互
- 29. 寻找一个基于磁盘的类似redis的数据库
- 30. 回滚函数中的交易调用另一个函数
需要上下文。给我们一些代码来展示你如何获得你传递给'WriteFile'的句柄。你在做什么或者是无害的,或者是非常危险的。但是除非您向我们展示您是如何使用它,否则我们无法分辨。 – 2014-11-06 17:31:36