Является ли FindFirstChangeNotification лучшим API для уведомлений об изменениях файловой системы в Windows? - PullRequest
18 голосов
/ 19 августа 2008

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

Ответы [ 4 ]

22 голосов
/ 22 августа 2008

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

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

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

0 голосов
/ 20 августа 2009

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

0 голосов
/ 11 июня 2009

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

0 голосов
/ 19 августа 2008

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

...