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

StackOverflow https://stackoverflow.com/questions/16615

Frage

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, aber über eine API).Ist eine FindFirstChangeNotification für jedes (nicht netzwerkfähige, nicht substituierte) Laufwerk meine beste Wahl oder gibt es andere, besser geeignete C/C++-APIs?

War es hilfreich?

Lösung

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

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

Wenn Sie andererseits das tun möchten, was FileMon tut, sollten Sie wahrscheinlich das tun, was FileMon tut und verwenden IFS zum Erstellen und Installieren eines Dateisystemfilters.

Andere Tipps

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

Tatsächlich funktioniert FileSystemWatcher perfekt mit freigegebenen Netzwerklaufwerken.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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top