小编cdt*_*ner的帖子

任何句柄关闭后,CreateFile FILE_FLAG_DELETE_ON_CLOSE失败

我们创建一个文件用作memorymappedfile.

我们打开,GENERIC_READ | GENERIC_WRITE
我们使用共享,FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE
我们使用文件属性FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE

我们成功创建了文件.我们可以使用相同的标志重新打开它.

一旦一个句柄被关闭,我们就不能再打开任何句柄,它返回ERROR_ACCESS_DENIED.我们可以通过关闭任何句柄来解决这个问题,第一个句柄来自CreateFile(ALWAYS_CREATE),另一个来自CreateFile(OPEN_EXISTING).

有什么方法可以避免这种情况吗?我们使用memoryMappedFile作为必须共享资源的不同进程之间的通信.这些过程有时会启动和停止.现在,一旦我们关闭一个句柄,我们就无法打开memorymapped文件.

我已经尝试更改open调用以使用FILE_ATTRIBUTE_NORMAL,因此只有create调用使用CLOSE_ON_DELETE,但这对这种情况没有影响.

c++ windows memory-mapped-files

6
推荐指数
1
解决办法
976
查看次数

标签 统计

c++ ×1

memory-mapped-files ×1

windows ×1