Winapi Win32是否支持FAT文件系统上的内存映射文件(CreateFileMapping)?

Winapi Win32是否支持FAT文件系统上的内存映射文件(CreateFileMapping)?,winapi,fat32,Winapi,Fat32,我担心在FAT文件系统上使用内存映射IO(via)的危险。具体的场景是用户直接从U盘打开文档(是的,你可以尝试禁止他们这样做!) MSDN没有提到任何关于文件系统约束的内容 更新 我没有任何真正的理由担心,只是有一种模糊的感觉,我在某个时候读到过关于它们的问题(我的职业生涯跨越了25年,所以我的记忆中有很多模糊的深度,一直追溯到8位微秒!)。他们是否应该得到支持的问题对我来说非常重要,所以我想问是否有人可以证实我的担忧。谢谢你让我安心。是的。它甚至支持在CDF或网络驱动器上映射文件。你怀疑的原因

我担心在FAT文件系统上使用内存映射IO(via)的危险。具体的场景是用户直接从U盘打开文档(是的,你可以尝试禁止他们这样做!)

MSDN没有提到任何关于文件系统约束的内容

更新


我没有任何真正的理由担心,只是有一种模糊的感觉,我在某个时候读到过关于它们的问题(我的职业生涯跨越了25年,所以我的记忆中有很多模糊的深度,一直追溯到8位微秒!)。他们是否应该得到支持的问题对我来说非常重要,所以我想问是否有人可以证实我的担忧。谢谢你让我安心。

是的。它甚至支持在CDF或网络驱动器上映射文件。你怀疑的原因是什么?

内存映射文件是我最喜欢的功能之一绝对没有危险。它是Windows I/O最基本的优化功能之一。如果启动EXE或加载DLL,它将在内部作为内存映射文件映射实现

包括FAT在内的所有类型的文件系统都支持它

顺便说一下,atzz说网络驱动器上允许内存映射文件。我可以补充说,这不仅是允许的,但它是严格建议使用内存映射文件也从网络文件。在这种情况下,I/O操作将以非常好的方式缓存,这是其他(C/C++)I/O无法完成的

如果希望EXE在从CD或网络打开时不会崩溃,可以在头中用一位标记程序可执行文件(链接器开关/SWAPRUN请参阅)。从U盘打开的文档没有选项

但是用户到底有什么问题呢?他们没有使用“安全删除硬件”图标吗?然后,他们必须学会这样做,就像他们必须学会不切换计算机电源,而是正确关闭计算机一样

您能解释一下为什么使用内存映射文件会有危险,在什么情况下您会遇到问题,并且使用其他I/O操作是否没有问题