Einzelnen Beitrag anzeigen

Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Problem mit ReadDirectoryChangesW

  Alt 30. Mär 2010, 07:15
Ich nutze Delphi 5 und ReadDirectoryChangesW (http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx) mit dem FILE_NOTIFY_CHANGE_LAST_WRITE Parameter um Änderungen in einem Verzeichnis zu überwachen.

Wenn es eine Änderung gibt bekomme ich eine FILE_NOTIFY_INFORMATION Struktur.

So weit so gut.

Das Problem: Das Event wird mehr als einmal verschickt!

Ich überwache c:\temp

Beispiel 1:

Kopieren von testfile.txt (100 mb) mit Windows Explorer nach c:\temp

Ich bekomme FILE_NOTIFY_INFORMATION 3 (!!) mal nacheinander. 2 mal wenn das Schreiben beginnt und ein drittes mal 5 Sekunden später wenn es endet.

Beispiel 2:

Kopieren von testfile.txt (100 mb) mit Total Commander (Dateimanager) nach c:\temp

Ich bekomme FILE_NOTIFY_INFORMATION 2 (!!) mal nacheinander. 1 mal wenn das Schreiben beginnt und ein zweites mal 5 Sekunden später wenn es endet.

---

Wie soll ich nun wissen wann das kopieren beendet wurde? Die Information dass es gestartet wurde, brauche ich nicht.

Ich kann die Anzahl der Meldungen nicht zählen, da ich z.B. bei Dropbox ein Event bekomme, bei Total Commander zwei und beim Explorer oder Ultraedit drei.

Diese Lösung klappt nicht:

Mit GetFileSecurityW schaue ich nach ob ich mit GENERIC_WRITE das File beschreiben kann. Leider meldet mir Windows, auch WÄHREND des Kopierens dass ich schreiben darf.

Danke für die Hilfe im Voraus!
  Mit Zitat antworten Zitat