Forum: Win32/Win64 API (native code)
C++
by TheReaper,
24. Mär 2010
Ich hab es jetzt hin bekommen. Und zwar krieg ich für jede Datei mehrere Messages die im FILE_NOTIFY_INFORMATION (fni) gespeichert werden. Ich versuche einfach nach jeder Message das File zu öffnen. Ungefähr so:
- Wenn Fehler bei Datei öffnen und GetLastError() == ERROR_SHARING_VIOLATION dann ignorieren und nächste Message aus fni nehmen
- Wenn Erfolg, Dateinamen merken, was damit machen und...
Forum: Win32/Win64 API (native code)
C++
by TheReaper,
24. Mär 2010
Ja, ich hab Zugriff auf den Emulator code. Aber Emulatoren haben es so ansich, dass Sie reagieren müssen, wie ihr "echtes" Produkt. Und das kann ich nicht ändern. Also kann ich nich nach belieben irgendwas einbauen. Genau das ist das Problem. Wie gesagt, ich muss damit zurecht kommen, was Windows mir liefert.
Forum: Win32/Win64 API (native code)
C++
by TheReaper,
23. Mär 2010
Bis jetzt läuft das Programm mit der Polling methode. Das ReadDirectoryChanges ist richtig implementiert. Es geht nur noch darum das ganze zu optimieren und sauber zu schreiben. Und da ist das Polling nicht gerade schön. Außerdem ständig createfile aufrufen kann auch schief gehen. Wenn beim schreiben irgendwas schief läuft und die Datei nicht geschlossen werden kann, wird immer ein Fehler zurück...
Forum: Win32/Win64 API (native code)
C++
by TheReaper,
23. Mär 2010
Polling ist nur der allerletzte ausweg, da es nur Ressourcen verbraucht und unsauber Programmiert ist. Nachrichten, Events oder sonstwas kann ich auch nicht schicken, weil mir gerade eingefallen ist, dass ich doch nichts an dem Schreiber ändern kann. Der Schreiber ist nur ein Emulator, damit ich besser testen kann. Ich muss also damit auskommen, was Windows an Nachrichten schickt.
Forum: Win32/Win64 API (native code)
C++
by TheReaper,
23. Mär 2010
Hallo, :hi:
Ich nutze die Funktion ReadDirectoryChangesW um einen Ordner zu überwachen, ob neue Dateien geschrieben, oder verändert wurden. Sobald ich die Info kriege, wird die in meinem Programm readonly geöffnet. Leider kann die nicht immer geöffnet werden, weil die Datei von außerhalb noch nicht fertig geschrieben bzw. geschlossen wurde. Also einfach warten bis sie zu ist, dachte ich mir....