Win32是否支持在FAT文件系统上使用内存映射文件(CreateFileMapping)?

4
我关注在FAT文件系统中使用CreateFileMapping通过内存映射IO的危险性。具体情况是用户直接从USB存储器中打开文档(是啊,你试着禁止他们这样做!)。MSDN的管理内存映射文件文章没有提到任何有关文件系统的限制。 更新 我并没有真正的理由感到担忧,只是模糊的记得曾经在某个时候读到过问题(我的职业生涯已经超过25年了,所以我脑海里有很多模糊的记忆,一直回溯到8位微型计算机时代!)。是否应该支持这种方式的问题对我来说非常重要,所以我想问问是否有人能证实我的担忧。谢谢让我放心了。
2个回答

7

内存映射文件是我最喜欢的功能之一,它绝对没有危险。它是基于极其优化的Windows I/O特性之一。如果启动一个EXE或间接加载DLL,它会被实现为内部的内存映射文件映射。

它支持所有类型的文件系统,包括FAT。

顺便说一下,atzz表示内存映射文件允许在网络驱动器上使用。我可以补充说明,不仅允许,而且强烈建议也将内存映射文件与网络文件一起使用。在这种情况下,I/O操作将被非常好地缓存,而其他(C/C ++)I/O操作则无法完成。

如果您希望EXE在从CD或网络打开时不会崩溃,则可以在标头中使用一个位来标记程序可执行文件(链接器开关/SWAPRUN,请参见http://msdn.microsoft.com/en-us/library/chzz5ts6.aspx)。没有针对从USB驱动器打开的文档的选项。

但是用户确切地遇到了什么问题?他们不使用“安全删除硬件”图标吗?那么他们必须学习如何正确地执行此操作,就像他们必须学习如何不切断电源而是正确关闭计算机一样。

您能否解释一下为什么您认为使用内存映射文件存在危险,并在哪些情况下您遇到了问题,而其他I/O操作的使用则没有这样的问题?


6

是的,它支持将文件映射到CDFS或网络驱动器上。你为什么会怀疑呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接