Sorry fürs hoch holen, aber mir war danach. Habe heute - Hirn nicht eingeschalten - angeblich damit eine Festplatte getrimmt. Und von der Ablaufdauer war es gar nicht viel anders, als ne Stunde zuvor bei einer SSD. Und damit habe ich die korrekte Ausführung des Programms - zumindest im Falle von Drittanbieter-Laufwerken schon in Zweifel gezogen.
Ich habe mir das Teil mal mit WinDbg angesehen, und es macht nichts anderes als ModLoad 00a90000 00aa0000 fsutil.exe. Und immer, wenn eine neue solche Zeile im Debugger auftaucht, springt der Fortschrittbalken ein Stück weiter. So lange, bis das Trim erfolgreich abgeschlossen ist...
0:003> da poi(esp+4)
0341f298 "fsutil file createnew C:\tmpxxxa"
0341f2b8 "data\xxxtmpxxxadataxxxwtf42.tmp "
0341f2d8 "2147483648"
Es erstellt also einen haufen von tmp-Dateien, die das Dateisystem voll schreiben. Und dann löscht es die alle wieder:
Breakpoint 1 hit
eax=03aae254 ebx=759e3db3 ecx=024a0000 edx=00000000 esi=03aaf4c8 edi=0034b8f8
eip=759e8312 esp=03aad7dc ebp=751d65bd iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000202
kernel32!DeleteFileW:
759e8312 8bff mov edi,edi
0:003> du poi(esp+4)
03aae254 "C:\tmpxxxadata\xxxtmpxxxadataxxx"
03aae294 "wtf1.tmp"
Es ist offensichtlich: Das Programm verlässt sich billigst auf das Betriebssystem. Es erzeugt große temporäre Dateien, die freien Speicherplatz belegen und anschließend löscht es sie wieder. Wenn nun das Betriebssystem TRIM unterstützt, kann das Löschen dazu führen, dass NTFS die freigegebenen Cluster an den Treiber meldet und dieser schließlich TRIM an die SSD sendet. Und bekanntlich können XP und Vista das nicht.
Der Prozess SSDToolbox.exe selbst hat immer nur mehrfach IOCTL=002d1080 (IOCTL_DISK_IS_WRITABLE) vor fsutil aufgerufen. Dieser IOCTL gehört zum Dateisystem, ist kein ATA-Befehl und es schaut wohl nur, ob das Dateisystem beschreibbar oder readonly ist, und aufgrund der Häufigkeit wohl, wie viel Platz noch frei ist. Vielmehr hätte ich da etwas in Richtung IOCTL_ATA_PASS_THROUGH sehen müssen, aber passiert nicht.
Also dann, verwendet das Tool nicht unter XP/Vista, es bringt einem gar nichts. Funktioniert nur richtig ab Windows 7.
https://files.thecybershadow.net/trimcheck/ <- falls jemand vorher/nachher selbst testen will. (Erst Trimcheck auf der SSD ablegen, öffnen, dann erst SSDToolbox Trim, dann wieder Trimcheck). Vielleicht nimmt man sich die SSD immer mal wieder unter Linux Live-CD zu herzen, dort gibt es ein fstrim. Für FAT32/FAT16 und ältere Win9x-Kisten bietet sich vom Loew das Programm TRIM an: https://rloewelectronics.com/
Die Beobachtung von OP, dass es schneller geworden sei, kann ich somit nicht nachvollziehen, scheint mir mehr Placebo zu sein. Oder die Garbage-Collection hat geholfen.


ModLoad: 00fe0000 00ff0000 fsutil.exe
Breakpoint 2 hit
eax=0341e5d8 ebx=0341f470 ecx=024a0000 edx=00000000 esi=00000000 edi=0341f388
eip=759e29ee esp=03aaf24c ebp=03aafce0 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
kernel32!CreateFileW:
759e29ee 8bff mov edi,edi
0:003> k
ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
03aaf248 011049f8 kernel32!CreateFileW
03aafce0 75a60274 SSDTool+0x249f8
03aafcec 774ae8c5 kernel32!BaseThreadInitThunk+0xe
03aafd2c 774aead7 ntdll!RtlCreateUserProcess+0x8c
03aafd44 00000000 ntdll!RtlCreateProcessParameters+0x4e
0:003> dd esp L5
03aaf24c 011049f8 0341e5d8 80000000 00000000
03aaf25c 00000000
0:003> du poi(esp+4)
0341e5d8 "C:\tmpxxxadata\xxxtmpxxxadataxxx"
0341e618 "wtf44.tmp"
0:003> g
Breakpoint 0 hit
eax=00000000 ebx=0341f4c0 ecx=00000000 edx=00000000 esi=0341f378 edi=0341f470
eip=75a5d21d esp=03aaf260 ebp=03aafce0 iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206
kernel32!WinExec:
75a5d21d 8bff mov edi,edi
0:003> k
ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
03aaf25c 011049d9 kernel32!WinExec
03aafce0 75a60274 SSDTool+0x249d9
03aafcec 774ae8c5 kernel32!BaseThreadInitThunk+0xe
03aafd2c 774aead7 ntdll!RtlCreateUserProcess+0x8c
03aafd44 00000000 ntdll!RtlCreateProcessParameters+0x4e
0:003> dd esp L5
03aaf260 011049d9 0341f378 00000000 c57a7bc8
03aaf270 00000000
0:003> da poi(esp+4)
0341f378 "fsutil file createnew C:\tmpxxxa"
0341f398 "data\xxxtmpxxxadataxxxwtf44.tmp "
0341f3b8 "2147483648"
[...]
Breakpoint 1 hit
eax=03aae254 ebx=759e3db3 ecx=024a0000 edx=00000000 esi=03aaf4c8 edi=0034b8f8
eip=759e8312 esp=03aad7dc ebp=751d65bd iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000202
kernel32!DeleteFileW:
759e8312 8bff mov edi,edi
0:003> k
ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
03aad7d8 010ee110 kernel32!DeleteFileW
03aad868 7745f956 SSDTool+0xe110
03aad95c 7745f7a0 ntdll!RtlDeactivateActivationContextUnsafeFast+0xc17a
03aad9a8 77473c76 ntdll!RtlDeactivateActivationContextUnsafeFast+0xbfc4
03aad9d8 77498a50 ntdll!RtlQueryAtomInAtomTable+0x45f
03aada20 7746ee46 ntdll!RtlLocaleNameToLcid+0x1749
03aada2c 77493728 ntdll!RtlAllocateHandle+0x9b
03aada54 77473a24 ntdll!RtlFreeHandle+0x3688
03aada98 77473ad4 ntdll!RtlQueryAtomInAtomTable+0x20d
00000000 00000000 ntdll!RtlQueryAtomInAtomTable+0x2bd
0:003> dd esp L5
03aad7dc 010ee110 03aae254 0341f540 03404518
03aad7ec 03aafce0
0:003> du poi(esp+4)
03aae254 "C:\tmpxxxadata\xxxtmpxxxadataxxx"
03aae294 "wtf1.tmp"
[...]
Display More