Announcement

Collapse
No announcement yet.

Festplatte voll

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Festplatte voll

    Ich möchte Daten auf die Festplatte schreiben. Da die Datenmengen größer sind, sollte natürlich abgefangen werden, wenn die Festplatte voll ist. Gibt es für diesen Fall eine entsprechende Exception unter dotnet (Das Exception Objekt schmeißt unbekannten Fehler) oder muss man sich selber helfen?

    Vile Dank für eure Antworten

  • #2
    Hallo,
    in diesem Fall wäre es eleganter, wenn vor dem Schreibzugriff die noch verfügbare Kapazität der Festplatte geprüft wird. Warum erst die Festplatte vollschreiben, wenn diese Operation wegen Platzmangel sowieso nicht erfolgreich abgeschlossen werden kann? Beim Kopieren auf eine Diskette wird ja von Windows auch vorher geprüft, ob die Datei überhaupt drauf passt, bevor der Kopiervorgang startet

    Comment


    • #3
      Danke für deine Antwort.
      Den Ansatz hatte ich auch schon verfolgt.
      Ich hab leider noch nicht ganz herausgefunfen,
      mit welchen Befehlen man an diese Informationen gelangt.
      Ich hoffe, du kannst mir da weiter helfen.

      Des weiteren ist halt das Problem, dass ich nicht genau weis, wie gross die Daten werden. Das ergibt sich erst zur Laufzeit

      Comment


      • #4
        Um die Kapazität der Festplatte zu ermittlen(über Win-API), muss man die kernel32.dll einbinden und die Methode
        GetDiscFreeSpaceEx benutzen.
        Weitere Infos:

        http://msdn.microsoft.com/library/en-us/fileio/fs/getdiskfreespaceex.asp

        Zusätzlich geht es auch mit WMI.

        Somit ist dieses Problem schon mal gelöst.

        P.S.: Leider stellt C# bzw. .Net dafür nicht einmal hilfsmittel bereit

        Comment


        • #5
          Dazu braucht Win32-API nicht direkt verwendet werden:

          System.Management.ManagementObject("Win32_LogicalD isk.DeviceID=\"C:\"").Get
          System.Management.ManagementObject.Properties

          > P.S.: Leider stellt C# bzw. .Net dafür nicht einmal hilfsmittel bereit.

          <a href="http://msdn.microsoft.com/vstudio/default.aspx?pull=/library/en-us/dndotnet/html/win32map.asp">Microsoft Win32 to Microsoft .NET Framework API Map</a&gt

          Comment


          • #6
            Der Weg über die WMI ist ein gutes Stück langsamer, als über die WinAPI. Deswegen nimm wirklich lieber die WinAPI-Lösung her. Ich hab auch schon mal mit der WMI Lösung gearbeitet, aber für einen Bildschirmschoner der sich jede Sekunde aktualisiert wars nicht sonderlich praktikabel, zumal ich an vielen anderen Stellen auch noch Zeit verlor.

            Der einfachere Weg ist über die WMI, der schnellere aber über die WinAPI.

            Gruß

            Markus Seid

            Comment


            • #7
              Und ich vergaß, die WMI ist nicht immer überall installiert :

              Comment


              • #8
                > Und ich vergaß, die WMI ist nicht immer überall installiert

                Wirklich nicht? Wenn das .NET-Framework installiert ist werdern doch tausend andere Dinge vorrausgesetzt bzw. mitinstalliert. Da könnte doch das WMI auch dabei sein

                Comment


                • #9
                  Unter Win 2000 Professional isses zum Beispiel erstmal nicht dabei. In einem anderen Forum hat man den Fragestellenden auch schon gefragt, ob WMI installiert ist. Und wenn du mal auf den Microsoft Download Seiten rumschnüffelst, dann findeste einen WMI Download.
                  Die WMI macht ja auch nix anderes als über die WinAPI die Daten zu sammeln, aber das abfragen der WMI dauert mir einfach zu lange. Unter Windows XP sollte es eigentlich immer dabei sein, aber nicht jeder hat, oder will nicht Windows XP, deswegen ein wichtiger Punkt auf den man Hinweisen sollten. Ich hab auch noch keinen Rechner gefunden, bei dem es nicht drauf wäre, aber alle in meinem Bekanntenkreis arbeiten mit Windows XP.<br>
                  Gruß<br>
                  Markus Seid

                  Comment

                  Working...
                  X