GetDiskFreeSpaceEx liefert falschen Wert, oder doch nicht?
-
Du vermischt hier 2 verschiedene Dinge.
GetDiskFreeSpaceEx fragt direkt das Filesystem, und das beantwortet die Frage einfach mit der Anzahl der freien Blöcke und der Gesamtanzahl an blöcken auf einem Volume. Berechtigungen spielen dabei keine Rolle. Sehrwohl spielen da aber andere Dinge mit rein wie z.B. der MFT, diverse Indexe etc., alles Strukturen die auch Speicher brauchen aber nicht als Dateien sichtbar sind.
Eigentlich sollte es daher möglich sein nur die Menge an Bytes zu bekommen, welche auch von einem selber abrufbar sind.
Was verstehst du unter "abrufbar"?
-
hustbaer schrieb:
Du vermischt hier 2 verschiedene Dinge.
Anscheinend ^^
hustbaer schrieb:
GetDiskFreeSpaceEx fragt direkt das Filesystem, und das beantwortet die Frage einfach mit der Anzahl der freien Blöcke und der Gesamtanzahl an blöcken auf einem Volume. Berechtigungen spielen dabei keine Rolle. Sehrwohl spielen da aber andere Dinge mit rein wie z.B. der MFT, diverse Indexe etc., alles Strukturen die auch Speicher brauchen aber nicht als Dateien sichtbar sind.
Berechtigungen spielen keine Rolle?
Und wie erklärst du mir das folgende dann?MSDN schrieb:
the total number of free bytes on a disk that are available to the user who is associated with the calling thread
Wobei es noch einen dritten Parameter hat, der die Anzahl der freien Bytes unabhängig vom User bekommt. Wobei ist denn da der Unterschied? Was ist mit user dann gemeint? Vor allem weil beide Parameter mir als Admin die gleiche Menge zurückliefern.
hustbaer schrieb:
Eigentlich sollte es daher möglich sein nur die Menge an Bytes zu bekommen, welche auch von einem selber abrufbar sind.
Was verstehst du unter "abrufbar"?
Berechtigung es abzurufen, bzw. zu lesen oder wie auch immer ^^
Aber meine Frage bleibt, wie könnte ich sinnvoll herausfinden, zu wie vielen belegten/genutzten Bytes ich mit meinen Rechten Zugang habe?
Grüssli
-
Noch nie was von Disk-Quotas gehört?
Unsere Serverplatten haben solche Quotas, das nicht jeder User sinnlos mit dem Platz umgeht!
-
Martin Richter schrieb:
Noch nie was von Disk-Quotas gehört?
Unsere Serverplatten haben solche Quotas, das nicht jeder User sinnlos mit dem Platz umgeht!Ehm ... nein ^^
Interessant, was ich in diesem Thread alles über XP lerne
Aber meine Frage *zwängelt*

Grüssli
-
Aber meine Frage bleibt, wie könnte ich sinnvoll herausfinden, zu wie vielen belegten/genutzten Bytes ich mit meinen Rechten Zugang habe?
Die freien Bytes sollten kein Problem sein, die bekommst du eh von GetDiskFreeSpaceEx.
Die belegten... wieso zum Geier willst du das wissen? Verstehe ich nicht...
Eine "sags mir einfach" Funktion gibts da aber ganz sicher nicht, d.h. wenn du das wirklich unbedingt wissen musst, dann musst du eben das ganze Volume durchscannen, und Bytes zählen.
-
hustbaer schrieb:
Die belegten... wieso zum Geier willst du das wissen? Verstehe ich nicht...
Eine "sags mir einfach" Funktion gibts da aber ganz sicher nicht, d.h. wenn du das wirklich unbedingt wissen musst, dann musst du eben das ganze Volume durchscannen, und Bytes zählen.Mist, denn genau das mache ich danach. Ich rattere durch die ganze Festplatte und baue währenddessen eine Strutkur auf. Es wäre daher schön, wenn ich die Bytes bereits zu Beginn weiss, dann kann ich in Prozent angeben, wie weit die Initialisierung bereits ist

Grüssli
-
Aaaaaaah.
Naja, in dem Fall würde ich einfach das nehmen was GetDiskFreeSpaceEx zurückliefert. Das wird dann zwar je nach Volume mehr oder weniger daneben sein (kann komplett daneben sein wenns mit nem Userkonto läuft welches fast keine Rechte auf irgendwelche Dateien hat), aber das sollte egal sein.Wenn du dann noch die Anzahl der gefundenen Dateien und Verzeichnisse mit ausgibst sollte das reichen.
Andere Programme machen das auch nicht anders.
-
hustbaer schrieb:
Wenn du dann noch die Anzahl der gefundenen Dateien und Verzeichnisse mit ausgibst sollte das reichen.
Ja das mache ich. Und jetzt habe ich es halt einfach noch so hingeschmuggelt, dass wenn die Funktion fertig ist, die Anzeige automatisch auf 100% springt. Nicht sehr sauber, aber naja, die Anzeige springt sowieso, wenn grosse Dateien gefunden werden ^^
hustbaer schrieb:
Andere Programme machen das auch nicht anders.
Das ist keine Entschuldigung für eine schlechte Lösung

Edit: Was bin ich eigentlich unhöflich, wie kann ich sowas vergessen:
Vielen Dank für die ganze Hilfe! ^^'Grüssli
-
Ich finde es ist keine schlechte Lösung. Eine schlechte Lösung wäre garnix anzuzeigen (also auch keinen Dateien/Verzeichnisse Counter - z.B. nur "working..."), oder aber erst die ganze Platte zu scannen um dann zu wissen wie lange das scannen der Platte dauern wird

Wenn du ohne die % Angabe auskommen kannst dann lass sie gleich ganz weg, das wäre auch OK.
BTW: wenn du nur Verzeichniseinträge durchgehst dann wäre es wohl wirklich besser die % Anzeige ganz wegzulassen, denn du kannst ja wirklich nicht wissen ob du gleich noch 2 riesen Dateien mit den restlichen 1000MB findest, oder eine Million kleine Dateien.
-
hustbaer schrieb:
Ich finde es ist keine schlechte Lösung. Eine schlechte Lösung wäre garnix anzuzeigen (also auch keinen Dateien/Verzeichnisse Counter - z.B. nur "working..."), oder aber erst die ganze Platte zu scannen um dann zu wissen wie lange das scannen der Platte dauern wird

Es gibt immer noch schlechtere Lösungen

Das ist aber auch keine Entschuldigung!
hustbaer schrieb:
BTW: wenn du nur Verzeichniseinträge durchgehst dann wäre es wohl wirklich besser die % Anzeige ganz wegzulassen, denn du kannst ja wirklich nicht wissen ob du gleich noch 2 riesen Dateien mit den restlichen 1000MB findest, oder eine Million kleine Dateien.
Ich gehe die ganze Festplatte durch, wo ich überall nur hinkomme. Dabei zeige ich dann auch die Bytes an, welche bereits initialisiert worden sind, von wievielen Bytes noch übrig sind. Zum Beispiel zum Zeitpunkt t:
12'316'879'206 bytes from 41'654'315'983 bytes initiated (15'453 files, 1'565 folders) ... 30%Da springt es so oder so schon und der geschickte Beobachter wird erkennen, dass dies wegen grossen Dateien passiert. Die Anzeige wird alle 100ms aktualisiert und die Daten werden immer nach dem Durchsuchen eines Ordners auf den neusten Stand gesetzt.
Aber wenn ich so überlege, dass das Programm sowieso wohl nur für meinen eigenen Privatgebrauch gebaut wird und wohl nie veröffentlicht wird, ist das ja sowieso egal und es geht nur um meine Bedürfnisse zu befriedigen

Grüssli