Как заставить систему оповещать приложение об изменении содержимого ко

  • Автор темы Автор темы Normann
  • Дата начала Дата начала
N

Normann

... содержимого конкретного файла. Может быть вопрос и не правильный, но смысл в том что бы не обращаться к диску и не устраивать ручное сравнение содержимого в цикле.
 
Не понял, что значит не обращаться к диску (разве такое возможно?) и не устраивать ручное сравнение содержимого в цикле.
Данная задача решается примерно так:
1. По событию обращения к файлу или по таймеру читаем файл в буфер (если файл большой, то делим его на части).
2. Считаем контрольную сумму (есть много известных алгоритмов контрольной суммы) буфера или буферов (для большого файла).
3. Сравниваем контрольные суммы - правильную с полученной.
 
а если прочитать дату изменения?
 
gamecreator
А что мешает при изменении файла программно оставить дату прежней?
 
Normann
Если система - винда, то можно мониторить папку через FindFirstChangeNotification или ReadDirectoryChangesW.
 
gamecreator
А что мешает при изменении файла программно оставить дату прежней?
я не знаком именно с этим вопросом, но по-моему это уже умышленное действие (т.е. обычно проги такого не делают). или я не прав?
 
Если система - винда, то можно мониторить папку через FindFirstChangeNotification или ReadDirectoryChangesW
Дело в том что FindFirstChangeNotification "следит" за целым каталогом, а для моего контекста это не подходит, а с ReadDirectoryChangesW я еще не знаком т.к. мне моя среда пишет про нее типа undeclared identifer хотя все условия довлетворяют требованиям описаным в мсдне (WinDef.h Win2k pro). Поэтому скажите ReadDirectoryChangesW покажет мне имя измененного файла?
 
моя среда пишет про нее типа undeclared identifer хотя все условия довлетворяют требованиям описаным в мсдне
Может, надо определить _WIN32_WINNT >= 0x0400 перед включением <windows.h>? Этот макрос по умолчанию не определен...
 
Определение _WIN32_WINNT >= 0x0400 я уже в код вставлял, все равно не поомгало, куда я его только не в ставлял, даже в сам WinBase.h. Но вот заработало оно только тогда когда я вставил это определение в свойства проэкта.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!