[NTFS] изменения файлов / папок
Кто хочет подписаться? Кто должен вызывать? Отслеживать изменения данных в файлах нужно?
Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.
Еще можно смотреть журнал NTFS, так можно следить изменения, которые произошли за время пока программане была запущена и сама не следила, там вроде записываются и изменения данных в файле. Но с журналом это теория, сам не пользовался этой фишкой. Ботай топик в МСДН "Change Journals".
Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.
Еще можно смотреть журнал NTFS, так можно следить изменения, которые произошли за время пока программане была запущена и сама не следила, там вроде записываются и изменения данных в файле. Но с журналом это теория, сам не пользовался этой фишкой. Ботай топик в МСДН "Change Journals".
Я не хочу постоянно сканировать папку на изменения... поидее ведь, нтфс - настолько продвинутая фс, что её драйвер должен уметь, когда ему говорят "измени такую-то папку", сообщать об этом тем приложениям, которые в этом нуждаются?
Например, проводник - неужели он каждые сколько-то миллисекунд обращается к открытой папке и смотрит, не поменялась ли она?
Например, проводник - неужели он каждые сколько-то миллисекунд обращается к открытой папке и смотрит, не поменялась ли она?
Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.смотри например:
FindFirstChangeNotification
The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. The function does not report changes to the specified directory itself.
This function does not indicate the change that satisfied the wait condition. To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.
HANDLE FindFirstChangeNotification(
LPCTSTR lpPathName,
BOOL bWatchSubtree,
DWORD dwNotifyFilter
);
Думаю, проводник через эти апи работает.
Да, можно.
http://www.relisoft.com/Win32/watcher.html
ЗЫ: Вот ведь действительно, I will use dumb forum users before asking google =( Четвёртая ссылка по запросу "win32 api file changed event". Вторая ссылка тоже приблизительно про это.
http://www.relisoft.com/Win32/watcher.html
ЗЫ: Вот ведь действительно, I will use dumb forum users before asking google =( Четвёртая ссылка по запросу "win32 api file changed event". Вторая ссылка тоже приблизительно про это.
>> Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.
Отслеживают, вот:
FILE_NOTIFY_CHANGE_FILE_NAME (renaming, creating, or deleting a file)
FILE_NOTIFY_CHANGE_DIR_NAME (creating or deleting a directory)
FILE_NOTIFY_CHANGE_ATTRIBUTES
FILE_NOTIFY_CHANGE_SIZE
FILE_NOTIFY_CHANGE_LAST_WRITE (saving a file (это оно!
FILE_NOTIFY_CHANGE_SECURITY
Отслеживают, вот:
FILE_NOTIFY_CHANGE_FILE_NAME (renaming, creating, or deleting a file)
FILE_NOTIFY_CHANGE_DIR_NAME (creating or deleting a directory)
FILE_NOTIFY_CHANGE_ATTRIBUTES
FILE_NOTIFY_CHANGE_SIZE
FILE_NOTIFY_CHANGE_LAST_WRITE (saving a file (это оно!
FILE_NOTIFY_CHANGE_SECURITY
Спасибо, буду разбираться - похоже, это действительно то, что надо...
Сорри за вопрос - нет инета...
Сорри за вопрос - нет инета...
Уверен, что оно? Думаю, что это отслеживание изменения атрибута последнего изменения, он может и не меняться при изменении содержимого файла. Но это все проверять нужно.
Оставить комментарий
AKMARJAN
Есть ли уже в WinNT возможность "подписаться" на файлы / папки, чтобы при их изменении, вызывалась какая-то функция?