Мне нужен аналог FileSystemWatcher .NET в необработанном C++/WinAPI. Я почти начал кодировать тот сам с помощью FindFirstChangeNotification/FindNextChangeNotification, но тогда мне пришло в голову, что я - вероятно, не первый, кому нужно это, и возможно кто-то будет готов совместно использовать.
Идеально то, в чем я нуждаюсь, является классом, который может использоваться следующим образом:
FileWatcher fw;
fw.startWatching("C:\MYDIR", "filename.dat",
FileWatcher::SIZE | FileWatcher::LAST_WRITE,
&myChangeHandler);
...
fw.stopWatching();
Или если это использовало бы что-то как повышение:: сигнал это было бы еще лучше. Но, никакие зависимости кроме Стандартной Библиотеки, повышения и необработанного WinAPI. Спасибо!
А как же функция ReadDirectoryChangesW?
http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx
Она хранит уведомления в буфере, чтобы вы не пропустили никаких изменений (если только буфер не переполнен)
.здесь есть какой-то код доменного домена здесь Отказ Мой нынешний проект использует это (унаследовано от предыдущих разработчиков). Это работает довольно хорошо, но мы пропускаем уведомления по причинам, которые неясно (и, возможно, не вызваны этим кодом).
Обратите внимание, что API Win32 здесь имеет некоторые ограничения, которые затрудняют / невозможно избежать отсутствия уведомлений. Фон и предполагаемый рабочий раунд для API - это здесь