Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag.py", line 211, in <module>
main()
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag.py", line 186, in main
cluster_size = get_cluster_size(volume)
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag.py", line 153, in get_cluster_size
return get_disk_size(volume)/defrag.get_volume_map(volume)[1]
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag_api.py", line 186, in get_volume_map
raise VolumeMapException(error, errors[get_last_error()])
defrag_api.VolumeMapException: (234L, 'ERROR_MORE_DATA')
Bildsequenzen "defragmentiert" kopieren?
egal ob mit oder ohne dem DELETE-Teil, bekomme ich folgenden gleichlautenden Traceback:
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Hi
Ist das eine grosse Partition mit kleinen Clustern?
ERROR_MORE_DATA heisst dass der Buffer den ich übergebe nicht ausreicht, sprich deine Partition besteht aus mehr als 64Millionen Clustern.
Da sollte es reichen bei der Funktion get_volume_map den Buffer zu vergrössern:
Einfach eine grössere Zahl nehmen, z.B. 128*1024*1024 ergibt daraus aber auch einen Ram-Verbrauch von 128MB.
Kling auf jeden Fall so, also könnte es nacher funktionieren.
Gruss
Ist das eine grosse Partition mit kleinen Clustern?
ERROR_MORE_DATA heisst dass der Buffer den ich übergebe nicht ausreicht, sprich deine Partition besteht aus mehr als 64Millionen Clustern.
Da sollte es reichen bei der Funktion get_volume_map den Buffer zu vergrössern:
Code: Alles auswählen
out_buffer = ctypes.c_buffer('\x00',64*1024*1024)
Kling auf jeden Fall so, also könnte es nacher funktionieren.
Gruss
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Also die Clustergrösse ist abhängig von der Grösse der Partition und dem was man Einstellt beim Formatieren.
Wenn ein Cluster z.B. 4kB gross ist, belegt jede Datei mindestens soviel, ist eine Datei kleiner ist der restliche Speicherplatz verloren. Ein Cluster ist also die kleinste Einheit die belegt werden kann.
Bei 5TB gibts natürlich eine Menge Cluster, ich hab hier ein Raid von 500GB .
Block hab ich im Quelltext zusammenstehende Cluster die belegt oder frei sind genannt.
Gruss
Wenn ein Cluster z.B. 4kB gross ist, belegt jede Datei mindestens soviel, ist eine Datei kleiner ist der restliche Speicherplatz verloren. Ein Cluster ist also die kleinste Einheit die belegt werden kann.
Bei 5TB gibts natürlich eine Menge Cluster, ich hab hier ein Raid von 500GB .
Block hab ich im Quelltext zusammenstehende Cluster die belegt oder frei sind genannt.
Gruss
ok, kaum setzt man die Groesse richtig, schon funktioniert es
Bei der Groesse dauert die Suche nach nem passenden Block natuerlich ne Weile, aber das ist glaube ich gut verschmerzbar.
Danke Dir nochmal ganz, ganz herzlich. Sag Bescheid, wie ich mich evtl. erkenntlich zeigen kann. Wenn Du magst kannst Du mir gerne ne Adresse zukommen lassen, dann schick ich ne Flasche Wein oder sonst etwas womit man Dir ne Freude machen kann, auf den Weg.
Eine kleine Frage noch:
Die Aenderungen, die wir jetzt zu Testzwecken eingebaut haben, welche davon soll ich drin lassen und welche sinnvollerweise wieder rausnehmen? Was also hing jetzt alles an der zu kleinen Buffersize und was war wirklich sonst noch "falsch". Also ich mein die Sachen mit der FILE_SHARE_READ und mit dem 0xffffffff: usw.
Bei der Groesse dauert die Suche nach nem passenden Block natuerlich ne Weile, aber das ist glaube ich gut verschmerzbar.
Danke Dir nochmal ganz, ganz herzlich. Sag Bescheid, wie ich mich evtl. erkenntlich zeigen kann. Wenn Du magst kannst Du mir gerne ne Adresse zukommen lassen, dann schick ich ne Flasche Wein oder sonst etwas womit man Dir ne Freude machen kann, auf den Weg.
Eine kleine Frage noch:
Die Aenderungen, die wir jetzt zu Testzwecken eingebaut haben, welche davon soll ich drin lassen und welche sinnvollerweise wieder rausnehmen? Was also hing jetzt alles an der zu kleinen Buffersize und was war wirklich sonst noch "falsch". Also ich mein die Sachen mit der FILE_SHARE_READ und mit dem 0xffffffff: usw.
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Hi
Also kannst du alle Änderungen drin lassen.
0xffffffff ist die korrekte Überprüfung ob das Handle gültig ist.
FILE_SHARE_READ brauchts noch zusätzlich damit das Volume geöffnet werden kann.
Grösserer Buffer brauchts für deine Partitionsgrösse.
Entschädigung ist nicht nötig
Gruss
Also kannst du alle Änderungen drin lassen.
0xffffffff ist die korrekte Überprüfung ob das Handle gültig ist.
FILE_SHARE_READ brauchts noch zusätzlich damit das Volume geöffnet werden kann.
Grösserer Buffer brauchts für deine Partitionsgrösse.
Entschädigung ist nicht nötig
Gruss
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Gerade das hier gesehen: http://wiki.ubuntuusers.de/FATSort
Das sortiert "physikalisch" die Namen im Inhaltsverzeichnis. Die Dateien selbst werden nicht angefasst, also auch nicht umsortiert und defragmentiert. Ist also für den OP ungeeignet.