Freigeist Geschrieben 6. August 2007 Teilen Geschrieben 6. August 2007 Hallo an alle Interessenten! Obwohl die meisten hier gestellten Fragen für mich Kinderfragen sind, stehe ich nun selbst wie ein Kind vor einem Problem; wer könnte mir weiterhelfen? Umgebung: C++, MFC Aufgabenstellung: Sobald man über den Internet Explorer oder auch cmd.exe, etc. einen neuen Ordner auf dem System erstellt, löscht oder verschiebt, soll meine eigene MFC-Anwendung hierüber informiert werden. Frage: Ist dies über einen geeigneten Interrupt möglich, und wenn ja, wie könnte ich diesen Interrupt abfangen (bislang keine Erfahrung mit Interrupts), oder gibt es gar eine andere elegante Lösung. Für sachdienliche Hinweise bedanke ich mich bereits vorab und freue mich über jeden Hinweis. Mit freundlichem Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. August 2007 Teilen Geschrieben 7. August 2007 Umgebung: C++, MFCDann bist du hier im falschen Forum. Ich verschiebe deinen Thread mal an die richtige Stelle Ist dies über einen geeigneten Interrupt möglich, und wenn ja, wie könnte ich diesen Interrupt abfangen (bislang keine Erfahrung mit Interrupts), "Interrupt" ist hier das falsche Stichwort, davon spricht man unter Windows eigentlich nur bei Hardwarezugriffen im Kernelmode. Ich hätte da vier Ansätze: 1) File System Filter Driver 2) Hooking der zugehörigen API-Funktionen (CreateDirectory, CreateDirectoryEx usw.) 3) ReadDirectoryChangesW (obwohl das für ganze Volumes wohl nicht angebracht ist) 4) Zugriff aufs Change Journal (falls es um NTFS geht) Alles Ansätzen ist gemein, dass du nicht vorab nach dem erstellenden Programm filtern kannst. Wenn dir das wichtig ist, kannst du dich ja nochmal melden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Freigeist Geschrieben 7. August 2007 Autor Teilen Geschrieben 7. August 2007 Hallo "Klotzkopp", hallo an alle! Vielen Dank für die schnelle Antwort! Zu Deinen Ansätzen: Ansatz 4 kommt nicht in Betracht, da auch FAT32 impliziert sein muß. Ansatz 3 (ReadDirectoryChangesW) ist sehr interressant, wirkt aber weniger griffig. Ansatz 2 Hooking erscheint mir zielgerichteter. Ansatz 1 erscheint mir perfekt. Resume: Ansatz 3 + 4 scheiden aus. Würde gerne mehr über Ansatz 2 + (insbesondere) Ansatz 1 erfahren, vielleicht sogar mit Codebeispiel. Natürlich habe ich die MSDN und unterschiedliche Foren durchforstet. Doch so ganz erschließen sich mir diese Themen nicht ganz, zumal (fast) alles auf Englisch ist. Oder kennst du vielleicht einen geeigneten Link auf eine gute (DEUTSCHSPRACHIGE) Seite? Du sagtest: "Alles Ansätzen ist gemein, dass du nicht vorab nach dem erstellenden Programm filtern kannst. Wenn dir das wichtig ist, kannst du dich ja nochmal melden." -> Wäre schon wichtig, aber kein muss. In froher Hoffnung und besten Dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 7. August 2007 Teilen Geschrieben 7. August 2007 Also ich würde auf jeden Fall Methode 3 bevorzugen und nur wenn dabei die Performance des Systems zu sehr in den Keller geht etwas anderes versuchen. Obtaining Directory Change Notifications (Windows) Zu Methode 1 kann ich nichts sagen aber API Hooking würde ich dafür nicht oder nur als aller letzte Möglichkeit in Betracht ziehen, vorallen wenn es sich um eine Anwendung handelt welche an andere verteilt werden soll... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Freigeist Geschrieben 7. August 2007 Autor Teilen Geschrieben 7. August 2007 Hinweis Ansatz 1: File System Filter Drivers File System Filter Driver erscheint mir doch die Beste Lösung, da auch Anti-Virus oder Back-Up-Programme mit dieser Technik arbeiten. Ich denke, daß dies seinen berechtigten Grund haben wird, siehe obiger Link. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 7. August 2007 Teilen Geschrieben 7. August 2007 Welche Betriebssystemversionen willst Du unterstützen? PS: Warum musst Du denn überwachen, was mit Ordnern geschieht? Wenn Du .NET verwenden kannst: Dort gibt es ein FileSystemWatcher Objekt. Eventuell reicht Dir das. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Freigeist Geschrieben 7. August 2007 Autor Teilen Geschrieben 7. August 2007 Betriebssysteme: Win95/98 (sollte), XP (muss), Vista (muss) Aufgabenziel der Anwendung: autom. Datenspiegelung/Back-Up (~echtzeit) .NET: kommt (z.Z. noch) nicht in Betracht ...suche noch immer eingehenden Referenzcode für Ansatz 1. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. August 2007 Teilen Geschrieben 7. August 2007 Aufgabenziel der Anwendung: autom. Datenspiegelung/Back-Up (~echtzeit)Dann bist du IMHO mit allen genannten Ansätzen komplett auf dem falschen Dampfer. Dir muss klar sein, dass du innerhalb eines Dateisystemfiltertreibers z.B. nicht die normalen Windows-Datei-APIs benutzen kannst. Du kannst also nicht so einfach die Dateioperationen "duplizieren". Für mich klingt das eher so, als ob du ein Software-RAID 1 suchst. ...suche noch immer eingehenden Referenzcode für Ansatz 1.Im IFS Kit sind doch Samples drin. Ist da nichts für dich dabei? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Freigeist Geschrieben 7. August 2007 Autor Teilen Geschrieben 7. August 2007 Hallo Klotzkopp, sorry, mein Fehler. Grund ist, daß ich aus Verschwiegenheitspflicht das eigentliche Aufgabenziel der Anwendung nicht mitteilen darf. Da jedoch "Bubble" nach der Aufgabe der Anwendung fragte, nannte ich Back-Up-Funktion, weil dies der eigentlichen Aufgabe schon nahe kommt; so schrieb ich auf die Schnelle; -Fehlgriff. Doch es ist definitiv NICHT Datenspiegelung; RAID-1 wäre da natürlich bestens geeignet; ...und Back-Up ist es auch nicht. Nochmals sorry. Um das also wieder richtig zu stellen!: Die Anwendung benötigt nach wie vor Information darüber, welche Dateien/Order auf einem System erstellt, verändert oder gelöscht werden, so z.Bsp. im Sinne einer Protokollierung, welche Dateien oder Verzeichnisstrukturen verändert werden. UND diese Informationen benötigt die Anwendung unverzüglich, - deshalb auch "~echtzeit". Ich bin Dir sehr dankbar für deine Ansätze und den Infos der anderen. Welchen Ansatz würdest DU für die Protokollierung etwaiger Änderungen an der Verzeichnisstruktur wählen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. August 2007 Teilen Geschrieben 7. August 2007 Welchen Ansatz würdest DU für die Protokollierung etwaiger Änderungen an der Verzeichnisstruktur wählen? Ich würde davon ausgehen, dass Mark Russinovich wusste, was er tat, als er FileMon geschrieben hat, und etwas ähnliches versuchen. Immerhin steht da grob beschrieben, wie das Programm funktioniert. Es könnte aber sein, dass du für Vista einen anderen Ansatz brauchst. Leider steht beim Process Monitor gar nicht, wie er funktioniert. Ins Sysinternals-Forum würde ich auch mal reinschauen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 7. August 2007 Teilen Geschrieben 7. August 2007 Grund ist, daß ich aus Verschwiegenheitspflicht das eigentliche Aufgabenziel der Anwendung nicht mitteilen darf. Das ist ein schlechter Ansatz, wenn man Hilfestellung sucht. Ohne zu wissen, was Du tatsächlich möchtest, können wir Dir nicht richtig helfen. Willst Du ein Tool wie "FileMon" entwickeln? Win95/98 (sollte), XP (muss), Vista (muss) Nur für die 32 Bit Versionen von XP und Vista? Oder auch für die 64 Bit Versionen? ...suche noch immer eingehenden Referenzcode für Ansatz 1. Link: File System Filter Drivers Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.