Подтвердить что ты не робот

Является FindFirstChangeNotification лучшим API для использования в уведомлении об изменении файловой системы в Windows?

Я новичок в программировании Windows, и я пытаюсь получить уведомление обо всех изменениях в файловой системе (аналогично информации, отображаемой FileMon из SysInternals, но через API). Является ли FindFirstChangeNotification для каждого (несетевого, неподпорогового) диска лучшим вариантом или есть другие более подходящие API C/С++?

4b9b3361

Ответ 1

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

Он не требует указателя на функцию, он требует, чтобы вы вручную декодировали необработанный буфер, он использует имена файлов Unicode, но обычно лучше и гибче.

С другой стороны, если вы хотите делать то, что делает FileMon, вы, вероятно, должны делать то, что делает FileMon, и использовать IFS для создания и установки фильтра файловой системы.

Ответ 2

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

Ответ 3

Фактически FileSystemWatcher отлично работает с общими сетевыми дисками. Я использую его прямо сейчас в приложении, которое, среди прочего, контролирует файловую систему для изменений. (Www.tabbles.net).

Ответ 4

Вы можете использовать класс FileSystemWatcher. Очень эффективен, но не может работать с общими сетевыми дисками.