Seite 1 von 1

Wie I/O-Fehler in Thumbnail Handler behandeln?

Verfasst: 04.09.2017, 16:52
von Krishty
Ich schreibe einen Thumbnail Handler für den Explorer. Funktioniert so weit sehr gut – allerdings bin ich heute auf eine beschädigte Datei gestoßen, und dann ist der Explorer abgestürzt.

„beschädigt“ bedeutet in diesem Fall, dass das Dateisystem an der Stelle beschädigt war (die Platte war beim Schreiben einer komprimierten Datei vollgelaufen) und dass die Datei dadurch unlesbar wurde. Win32 hat sie mich zwar mappen lassen, aber beim Zugriff auf die 2. Page (Byte 4096 und folgende) wurde eine In Page Error-Ausnahme ausgelöst. Die habe ich nicht abgefangen, und damit den Explorer zum Absturz gebracht.

Ich weiß nicht so recht, wie ich damit umgehen soll.
  • Pro nichts zu tun: Dateisystemfehler liegen ganz klar außerhalb meiner Zuständigkeit. Mein Thumbnail Handler ist in keiner Weise qualifiziert, da irgendwas tun zu können. Ich bin nicht einmal vorbereitet, den Speicher vernünftig freizugeben – sobald Win32 die Datei mit allen Rechten erfolgreich gemappt hat, darf ich davon ausgehen, sie auch lesen zu können.

    Selbst wenn ich den Fehler in einen Rückgabewert für den Explorer übersetzen würde, würde der ihn einfach verschlucken, statt ihn dem User anzuzeigen.
  • Pro doch was tun: Es ist dem User fast unmöglich, die Ursache des Absturzes zu finden: Öffnet er den Ordner, wird mein Thumbnail Handler aufgerufen -> der Explorer stürzt ab. Sucht er nach der Datei oder nach verwandten Dateien, wird mein Thumbnail Handler aufgerufen -> Explorer stürzt ab. Klickt er auf die Datei, oder ruft ihre Eigenschaften auf -> Explorer weg.

    Verbietet COM mir nicht auch, Ausnahmen über Schnittstellen hinweg zu schmeißen? Eigentlich müsste jede meiner Methoden in einem __try-__except()-Block stecken. Dann könnte der User zumindest weiter mit dem Explorer in den Ordnern/auf dem Volume arbeiten.

    Zu raffen, dass das Dateisystem kaputt ist und CHKDSK auf dem Volume ausgeführt werden muss, ist dann aber nochmal was anderes.
Wat do?

Re: Wie I/O-Fehler in Thumbnail Handler behandeln?

Verfasst: 04.09.2017, 19:44
von Chromanoid
Kannst du den Absturz verhindern indem du die Exception abfängst und im Thumbnail einen Fehler anzeigst? Ich würde so argumentieren, dass alles was im Thumbnail Handler passiert nicht passieren würde wenn er nicht eingerichtet wäre. Von daher kannst du im Grunde jede Exception abfangen. Du bist da im Grunde an einer Programmgrenze... vielleicht kannst du den Fehler ja in das Ereignisprotokoll loggen?