用CreateFileMapping和MapViewOfFile映射的文件,对内容进行了改写会影响文件吗?

用CreateFileMapping和MapViewOfFile映射的文件,对内容进行了改写会影响文件吗?,第1张

应该会吧,首先这个第一个函数是创建文件在内敏友存的映映射句柄贺键,要看你创建的参数也就是第3个参数,如是是Page_reada那就是不改变,第2个数函数是来寻找对应映射的内存地址,如何访问决定上面说的参数,清理工作就是释放句柄,禅拿巧还有是unviewoffile(),用手机打的真难阿)

映射是为了方便多个进程间的共同开发从而共享一段内存,但是,它还有一个其他功能,那就是修改文件。

在内存映射之前,首先我们需要用CreatFile()来打开文件,如果我们需要对文兆乎件进行修改的话,第二个关键函数必须设置在内存映射之前,首先我们需要用CreatFile()来打开文件,如果我们需要对文件进行修改的话,第二个关键函数必须设置

然后就是经典的CreateFileMapping()来映射文件到内存了,这个函数共有6个参数,楼主在之前修改文件的时候是读取文件,然后对文件字符串加密,但是加密后的体积比原文件大,这样的话我在写入的时候总是出现问题,后来仔细看了MSDN才发现,猫腻就在这个函数,它的第五个跟第六个函数告诉我们我们要映射文件的高32位的最大值,与低32位的最小值,如果两个都为零的话,它默认映射的大小就是原文件的大小,所以你在试图修改它的映射文件并把它映射回去的时候,会出现比原文件大的族凳悉情况粗嫌,这样就出现问题了,所有,我们在映射文件到到内存之前,最好求出我们修改后的文件大小。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12126106.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存