Скажем, я открыл два дескриптора файла для одного и того же файла (в том же процессе, если это имеет значение). На первом дескрипторе я выполняю записи, на втором дескрипторе я выполняю операции чтения.
hFile1 = CreateFile(path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
hFile2 = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointerEx(hFile1, ...); // seek to write position
WriteFile(hFile1, ... );
// is any barrier or flusing needed here?
SetFilePointerEx(hFile2, ...); // seek to read position
ReadFile(hFile2, ... );
Будет ли чтение на hFile2
всегда сразу "видеть" все предыдущие записи, выполненные на hFile1
, или необходимо очистить первый дескриптор?
Документировано ли поведение где-либо?
Одинаково ли поведение при использовании FILE_FLAG_NO_BUFFERING
?