в одном процессе я вызвал createfile с GENERIC_READ |GENERIC_WRITE, FILE_SHARE_READ |FILE_SHARE_WRITE, OPEN_ALWAYS и FILE_ATTRIBUTE_NORMAL в качестве параметров.Затем я вызвал LockFileEx на весь файл.я получил эксклюзивную блокировку и заблокировал ее в диапазоне от 0 до UINT_MAX.
, после чего в другом процессе я вызвал :: CreateFileW (path.c_str (), perms, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRUT, НОЛЬ);
, и это стерло содержимое файла.разве это не должно быть в состоянии сделать это, в то время как моя другая prcoess заблокировала файл (исключительно)?
Я хочу, чтобы другие процессы могли получать указатели на файл (именно поэтому я использовал флаги file_share), но я предположил, что они вообще не могли изменить файл, пока другой процесс заблокировал его, и поэтому я делал что-то вроде
createfile lockfileex
и блокировал его на lockfileex до тех пор, пока не освободится другой файлзамок.это только у меня так или здесь не так поведение msft?