Ist FindFirstChangeNotification die beste API für die Benachrichtigung über Dateisystemänderungen unter Windows?

Lesezeit: 1 Minute

Benutzer-Avatar
Kostenlose Gnus

Ich bin neu in der Windows-Programmierung und versuche, über alle Änderungen am Dateisystem benachrichtigt zu werden (ähnlich den Informationen, die FileMon von SysInternals anzeigt, jedoch über eine API). Ist eine FindFirstChangeNotification für jedes (Nicht-Netzwerk-, Nicht-substed)-Laufwerk meine beste Wahl, oder gibt es andere, besser geeignete C/C++-APIs?

Benutzer-Avatar
Mat Noguchi

FindFirstChangeNotification ist in Ordnung, aber für etwas mehr ultimative Leistung sollten Sie verwenden ReadDirectoryChangesW. (Tatsächlich wird es sogar in der Dokumentation empfohlen!)

Es erfordert keinen Funktionszeiger, Sie müssen einen Rohpuffer manuell decodieren, es verwendet Unicode-Dateinamen, ist aber im Allgemeinen besser und flexibler.

Auf der anderen Seite, wenn Sie tun wollen, was FileMon tut, sollten Sie wahrscheinlich tun, was FileMon tut und verwenden IFS zum Erstellen und Installieren eines Dateisystemfilters.

  • Ich habe mich am Ende für ReadDirectoryChangesW entschieden und hatte Spaß daran, herauszufinden, wie ich den zurückgegebenen Puffer in ein Formular umwandeln kann, das ich an meinen Java-Code zurückgeben kann, aber es tut definitiv, was ich will.

    – Kostenlose Gnus

    14. September 2008 um 23:23 Uhr

Es gibt andere Möglichkeiten, dies zu tun, aber die meisten von ihnen erfordern Aufwand von Ihrer Seite (oder nehmen Leistung von Ihrer App, oder Sie müssen einen Thread blockieren, um sie zu verwenden usw.). FindFirstChangeNotification ist etwas kompliziert, wenn Sie es nicht gewohnt sind, mit Funktionszeigern usw. umzugehen, aber es hat den Vorteil, dass das Betriebssystem den Großteil der Arbeit für Sie erledigt.

Tatsächlich funktioniert FileSystemWatcher perfekt mit freigegebenen Netzlaufwerken. Ich verwende es gerade in einer Anwendung, die unter anderem das Dateisystem auf Änderungen überwacht. (www.tabbles.net).

Sie können die FileSystemWatcher-Klasse verwenden. Sehr effizient, funktioniert aber nicht mit freigegebenen Netzwerklaufwerken.

1159670cookie-checkIst FindFirstChangeNotification die beste API für die Benachrichtigung über Dateisystemänderungen unter Windows?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy