Hook / Ordnerüberwachung
-
Was Du machen willst, geht nur mittels eines "File System Filter Drivers".
-
Wie, das geht nur mit einem Treiber?
Ist es nicht möglich einfach Ereignisse mitzuloggen oder so??
Also es geht mir da drum: Ich habe ein Ordner, in den Datein reinkommen, die nach kurzer Zeit dann in Benutzung sind.
Ich möchte mein Programm so schreiben, dass kurz nach der Erstellung der Datei eingreift und diese Datei entweder selber verwendet oder einfach verschiebt, sodass das andere Programm nicht auf die Datei zugreifen kann und das soll am Besten immer geschehen, sobald eine Datei entsteht, da dies mehr Recourcen schohnt als wenn ich dies mit einen Timer realisieren würde.
Zwar könnte ich dies auch machen und immer in diesen Ordner reinschauen, doch kann es passieren, dass ich dann meinetwegen eine Millisekunde zuspät oder so da rein schaue und die Datei dann schon in Benutzung ist und um diese wieder zu beenden fehlen mir die Handles oder irre ich mich da, bzw mit meiner Idee??
Bin gerne für Verbesserungen zu haben!
-
FindFirstChangeNotification
http://msdn2.microsoft.com/en-us/library/aa364417.aspxReadDirectoryChangesW
http://msdn2.microsoft.com/en-us/library/aa365465.aspx
-
Und wie genau kann ich diese Funktionen auf mein Problem anwenden??
-
TheCaleb schrieb:
Wäre es auch möglich einzustellen, dass wenn eine Datei erstellt wird, dass dann andere Prozesse auf diese Datei kein Zugriff mehr haben??
Das geht nur mit einem Treiber (oder durch Änderung des betreffenden programmes, welche die Datei öffnet)
-
Achsoooo und was wäre mit meinen anderen Ideen
-
Jochen Kalmbach schrieb:
Was Du machen willst, geht nur mittels eines "File System Filter Drivers".
Eigentlich sollte das Hooken der Dateizugriffs-APIs doch ausreichen, oder?
-
audacia schrieb:
Jochen Kalmbach schrieb:
Was Du machen willst, geht nur mittels eines "File System Filter Drivers".
Eigentlich sollte das Hooken der Dateizugriffs-APIs doch ausreichen, oder?
??? Was will er wo hooken? In jedem Prozess? Auch wenn über Netzwerk zugegriffen wird? Na das musst Du mir mal zeigen

-
Eigentlich sollte es doch ausreichen, CreateFile prozeßübergreifend zu hooken, oder?
http://www.madshi.net/madCodeHookDescription.htm
-
Und wenn von einem anderen Rechner auf die Datei zugegriffen wird? Und wie willst Du Prozessübergreifen hooken, wenn mehrere Sessions aktiv sind?
-
Jochen Kalmbach schrieb:
Und wenn von einem anderen Rechner auf die Datei zugegriffen wird?
Auch das dürfte doch irgendein lokaler Prozeß verwalten, der dann CreateFile aufruft - zumindest aber die zugrundeliegende Kernelfunktion.
Jochen Kalmbach schrieb:
Und wie willst Du Prozessübergreifen hooken, wenn mehrere Sessions aktiv sind?
Den API-Hook in den sessionübergreifenden Autostart packen

Die umfassendste Lösung wäre natürlich dein Filtertreiber. Aber ein API-Hook ist ungleich leichter realisierbar, und wenn der Netzwerkzugriff keine Rolle spielt, wäre das IMHO durchaus eine Alternative.