FindFirstChangeNotification API - PullRequest
       8

FindFirstChangeNotification API

1 голос
/ 16 апреля 2010

Я использую FindFirstChangeNotification API для мониторинга изменений, происходящих в определенной папке. Но как исключить определенный файл (присутствующий в папке просмотра) Только уведомление об изменении.

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Используйте ReadDirectoryChanges(), он отслеживает файлы в дереве каталогов. ReadDirectoryChanges в основном делает то же самое, что и FindFirstChangeNotification, FindNextChangeNotification. ReadDirectoryChanges является просто более мощным, потому что, если вы предоставите опциональную функцию обратного вызова для ReadDirectoryChangesW(), вы сможете увидеть, какой файл изменился и почему он изменился, а затем отфильтровать логику вашего приложения без дополнительных системных вызовов, чтобы найти какой файл изменился, ... вы получите этот массив структур.

typedef struct _FILE_NOTIFY_INFORMATION {

  DWORD NextEntryOffset;

  DWORD Action;                    // <- reason for the change

  DWORD FileNameLength;

  WCHAR FileName[1];

} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;

FindNextChangeNotification больше похож на кувалду, вам все равно нужно проверить папку, чтобы увидеть, что именно изменилось, но ее проще использовать, если вы уже знаете, какой файл искать. Findfirst / Next также немного легче использовать с точки зрения логики ожидания потока / завершения ввода-вывода.

1 голос
/ 16 апреля 2010

Работает на уровне каталогов, если вы хотите исключить определенный файл, просто игнорируйте любые уведомления об этом в логике вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...