Was kann der Grund für die Windows-Fehler ERROR_DISK_FULL (112), wenn ein alternativen NTFS-Datenstrom öffnen?

StackOverflow https://stackoverflow.com/questions/1606245

  •  05-07-2019
  •  | 
  •  

Frage

Meine Anwendung schreibt einige Bytes von Daten zu einem alternativen Datenstrom. Dies funktioniert gut auf alle bis auf einen Rechner (Windows Server 2003 SP2). Stattdessen gibt Create ERROR_DISK_FULL wenn ich versuche, einen alternativen Datenstrom (im Stammverzeichnis) zu erstellen. Ich finde nicht, den Grund für dieses Ergebnis, weil ...

  • Es gibt viel Platz auf dem Laufwerk.

  • Das Laufwerk ist NTFS formatiert (aufgrund GetVolumeInformation).

  • Das Laufwerk unterstützt altenate Daten Ströme (aufgrund GetVolumeInformation).

Edit: Ich kann ein paar mehr Informationen darüber, was der Grund, nicht ist: Ich habe viele Ströme auf einem Testsystem, das nicht den Fehler zeigte und fragte mich, ob die Fehler auftreten könnten. Es kam nicht. Statt nach etwa 2000 Streams mit langen Dateinamen aufgetreten ein anderer Fehler und beharrte: 1450 (ERROR_NO_SYSTEM_RESOURCES)

.

EDIT: Hier ist ein Beispiel für eine der verwendeten Dateinamen:

char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";

EDIT: Unser Kunde nutzt eine Unternehmensantivirus-Software von Avira auf diesem Server. Vielleicht ist dies der Grund (Alternative Datenströme können durch Malware missbraucht werden).

War es hilfreich?

Lösung

Nach einem Support-Ticket bei MS Eröffnung Ich weiß, dass es eine Nur-Lese-Flag gesetzt war, die man nur einstellen kann (und Reset) mit undokumentierte Windows-Funktionen. Niemand weiß, wer diesen Flag gesetzt und warum, aber ich schickte ihnen ein Bild des Antriebs (nachdem ich die Maschine von unserem Kunden vor) und so dachten sie es aus. Wir haben nur eine Abhilfe in unserer Anwendung (Wir verwenden einen anderen Ort, wenn wir diesen Fehler erkennen). Inzwischen wissen wir, dass einige unserer Kunden über dieses Problem.

Andere Tipps

Gibt es komprimiert / Ersatz Dateien oder alternative Datenströme?

  

Oft Backup-Anwendungen erhalten ERROR_DISK_FULL Fehler versuchen, komprimierte Dateien zu sichern, und dies verursacht ziemlich viel Verwirrung, wenn es noch mehrere Gigabyte freien Speicherplatz auf dem Laufwerk sind. Andere Probleme können auch auftreten, wenn komprimierte Dateien zu kopieren. Das Ziel dieses Blogs ist es, dem Leser ein besseres Verständnis von dem, was wirklich passiert, wenn Sie NTFS-Dateien komprimieren.

Von Legendes NTFS-Komprimierung

Nur ein blinder Schuss, aber die Rechte richtig eingestellt?

Nur eine weitere Möglichkeit ...

Haben Sie die Anzahl der aktuellen Dateien in Ihrem O opend? Die OS-Unterstützung max. Anzahl der reservierten Datei-Handles nach diesem Bericht ERROR_DISK_FULL oder ERROR_NO_SYSTEM_RESOURCES.

Und zweite Möglichkeit ... Das Stammverzeichnis wird durch die Anzahl der Dateien beschränkt. Wie ich mich erinnere 512 Dateien in älteren Versionen von OS. Aber die NTFS unterstützt unbegrenzte Anzahl von Dateien in root!

Sie möchten, um zu sehen, was so etwas wie Sysinternal Process Monitor- Dienstprogramm erfasst, wenn diese Datei zu erstellen versuchen - es die Rückgabecodes von verschiedenen APIs in der E / A-Stapel beteiligt zeigen und einer von ihnen könnte Ihnen einen Anhaltspunkt, warum 112 an Sie zurückgeschickt wird. Hoffentlich wird die Detailebene in ProcMon genügt - wenn nicht, ich denke, es gibt auch andere, detailliertere I / O-Trace Einrichtungen für Windows (aber ich weiß nicht, von ihnen aus der Spitze von meinem Kopf)

Der Dateiname Sie geben, ist

char szStreamFileName[] = "C:\\:abcdefghijklm...

es beginnt mit

C:\\:

Ist das ein Tippfehler auf der Post, oder ist es wirklich ein Doppelpunkt nach dem Schrägstrich? Ich denke, das ist ein illegalen Dateinamen.

Wenn Sie versuchen, eine Datei größer als 2 GB von einem anderen Dateisystem (NTFS) auf FAT / FAT32 zu kopieren, die eine 2 GB Grenze hat diese Fehlermeldung angezeigt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top