On POSIX systems rename(2) provides for an atomic rename operation, including overwriting of the destination file if it exists and if permissions allow.
Is there any way to get the same semantics on Windows? I know about MoveFileTransacted() on Vista and Server 2008, but I need this to support Win2k and up.
The key word here is atomic… the solution must not be able to fail in any way that leaves the operation in an inconsistent state.
I’ve seen a lot of people say this is impossible on win32, but I ask you, is it really?
Please provide reliable citations if possible.
Win32 does not guarantee atomic file meta data operations. I’d provide a citation, but there is none – that fact that there’s no written or documented guarantee means as much.
You’re going to have to write your own routines to support this. It’s unfortunate, but you can’t expect win32 to provide this level of service – it simply wasn’t designed for it.