У меня есть приложение, которое отслеживает изменения в каталоге и загружает их на сервер.
auto hdir = CreateFile(dir.c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
for (;;)
{
vector<char> d(16384);
DWORD by = 0;
ReadDirectoryChangesW(hdir, d.data(), 16384, false, FILE_NOTIFY_CHANGE_LAST_WRITE, &by, 0, 0);
... // Process changes and upload them
}
Однако, похоже, что ReadDirectoryChanges блокирует некоторые права на запись. Когда Visual Studio запускает проект в отслеживаемом каталоге, он жалуется, что для этого каталога требуется доступ администратора (но нет попыток что-либо написать, ReadDirectoryChanges () не возвращается из моего приложения).
Когда файл обновляется, функция корректно возвращается, и я обрабатываю его, однако я заметил, что иногда Visual Studio создает временный файл внутри каталога, возможно, файл восстановления.
Что не так с этой функцией?