Винапи: Требует ли сброса чтение и запись в один и тот же файл с помощью разных дескрипторов? - PullRequest
0 голосов
/ 02 мая 2018

Скажем, я открыл два дескриптора файла для одного и того же файла (в том же процессе, если это имеет значение). На первом дескрипторе я выполняю записи, на втором дескрипторе я выполняю операции чтения.

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...