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

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

19.08.2008 17:44:27
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

22
3.07.2012 14:54:47
В конце концов я выбрал ReadDirectoryChangesW и получал удовольствие, работая над тем, как преобразовать буфер, возвращаемый в форму, которую я мог бы передать обратно в свой Java-код, но он определенно выполняет то, что я хочу.
Free Wildebeest 14.09.2008 23:23:54

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

0
19.08.2008 18:31:47

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

-1
11.06.2009 13:55:57

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

0
20.08.2009 17:14:13