在一个程序中以内存映像方式打开文件.CreateFileMapping的指定的尺寸就是文件的长度.
如果此时另外一个程序也内存映像方式打开此文件.但是CreateFileMapping指定了更长的尺寸.能够打开成功.在资源管理器里文件长度也变成了新的长度.但是如果第二个程序访问新增区域内的内存的时候发生了异常.要请教各位大哥的就是这是为什么?有没有办法在另外一个程序已经以内存映像方式打开一个文件后再对文件进行扩容,以使新的程序扩容的区域写入数据

解决方案 »

  1.   

    而且你在第二个程序你应该用OpenFileMapping来打开内存映射文件,而不是用CreateFileMapping!
      

  2.   

    在第二个程序中扩容好像不妥,既便第二个程序有“扩容”需求,也应当由第一个程序Reload,其他程序均OpenFileMapping,逻辑上更为清晰。
      

  3.   

    谢谢楼上各位。但是CreateFileMapping是没有问题的。
      

  4.   

    在第二个程序里再CreateFile总是返回-1;
    如果你把-1传递给CreateFileMapping,则系统在页面文件里创建文件映射对象,这跟第一个程序里创建的文件映射对象是两个不同的对象.
    把你的代码帖出来看看!