[NTFS] изменения файлов / папок

AKMARJAN

Есть ли уже в WinNT возможность "подписаться" на файлы / папки, чтобы при их изменении, вызывалась какая-то функция?

bastii

Кто хочет подписаться? Кто должен вызывать? Отслеживать изменения данных в файлах нужно?
Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.
Еще можно смотреть журнал NTFS, так можно следить изменения, которые произошли за время пока программане была запущена и сама не следила, там вроде записываются и изменения данных в файле. Но с журналом это теория, сам не пользовался этой фишкой. Ботай топик в МСДН "Change Journals".

AKMARJAN

Я не хочу постоянно сканировать папку на изменения... поидее ведь, нтфс - настолько продвинутая фс, что её драйвер должен уметь, когда ему говорят "измени такую-то папку", сообщать об этом тем приложениям, которые в этом нуждаются?
Например, проводник - неужели он каждые сколько-то миллисекунд обращается к открытой папке и смотрит, не поменялась ли она?

bastii

Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.
смотри например:
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
);

Думаю, проводник через эти апи работает.

bleyman

Да, можно.
http://www.relisoft.com/Win32/watcher.html
ЗЫ: Вот ведь действительно, I will use dumb forum users before asking google =( Четвёртая ссылка по запросу "win32 api file changed event". Вторая ссылка тоже приблизительно про это.

bleyman

>> Есть апи, которые отслеживают изменения в директории и ее поддиректориях, правда они вроде не отслеживают изменения данных в файлах.
Отслеживают, вот:
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

Спасибо, буду разбираться - похоже, это действительно то, что надо...
Сорри за вопрос - нет инета...

bastii

Уверен, что оно? Думаю, что это отслеживание изменения атрибута последнего изменения, он может и не меняться при изменении содержимого файла. Но это все проверять нужно.
Оставить комментарий
Имя или ник:
Комментарий: