We create a file for use as memorymappedfile.
we open with GENERIC_READ | GENERIC_WRITE
we use share with FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE
we use file attributes FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE
we create the file successfully. We can reopen it as many times with the same flags as we want.
Once one handle has been closed, we can no longer open any more handles, it returns with ERROR_ACCESS_DENIED. We can cause this by closing any of the handles, either the first from CreateFile(ALWAYS_CREATE), or the others from CreateFile(OPEN_EXISTING).
Is there any way to avoid this ? We use the memoryMappedFile as communication between the different processes that must share resources. these processes sometimes start and stop. Right now as soon as we close one handle, we are stuck unable to open the memorymappedfile.
I have tried changing the open calls to use FILE_ATTRIBUTE_NORMAL, so only the create call uses CLOSE_ON_DELETE but that has no effect on this situation.