On non-Windows platforms, get_temp_file_name() uses mkstemp(),
which picks a unique name and creates a file atomically. The
Windows implementation uses _mktemp_s(), which doesn't create the
file. The documentation of _mktemp_s() also says that by design,
the function uses the same pattern within a process, as long as that
file doesn't exist.
Thus previously, two consecutive calls to get_temp_file_name()
on Windows returned the same file name.
Try to create the suggested temp file with _O_EXCL (marking the file name as already used for future calls to _mktemp_s) and retry if we weren't able to exclusively create the file.
This fixes the test failures on Windows observed in D122257.