Ich bin heute in der c't 5/2009 auf einen interessanten Hinweis gestoßen:
Es gab ja hin und wieder Leute, bei denen wohl wegen häufigeren Fehlerchen im Zugriff auf das Gerät der Fehlerzähler stieg und irgendwann der IDE-Controller von UDMA auf PIO umstieg. Die Folge: Quälend langsames Auslesen. Die bisherige Lösung: IDE-Kanäle deinstallieren und gleich neu starten.
Anscheinend muss das nicht sein: Es gibt auch einen Registry-Eintrag im Pfad
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
(IDE ATA/ATAPI-Controller). Darin sind einige nummerierte Einträge enthalten. Der mit dem Namen "0000" wird wohl meist der IDE-Controller sein, die mit den Namen "0001" und "0002" der primäre bzw. sekundäre Kanal. Allerdings muss das wohl nicht zwangsläufig so sein. Und wer mehrere IDE-Controller hat, für den wird es wohl interessanter - da haben die Controller dann laut Microsoft die Werte 0000 (0002, 003) und 0001 (0004, 0005).
Jedenfalls soll seit Windows XP SP2 das Setzen eines DWORD-Wertes "ResetErrorCountersOnSuccess" auf den Wert 1 im Registry-Zweig des IDE-Kanals dafür sorgen, dass bei erfolgreichen Operationen dieser Fehlerzähler auch mal wieder zurückgesetzt wird, was das Auflaufen größerer Zahlen und die allmähliche Herabstufung des UDMA-Modus bis zum PIO-Modus nach längerer Zeit vermeiden soll.
Microsoft hat hierzu auch den Knowledge-Base-Artikel 817472 veröffentlicht.
Das manuelle Wühlen in der Registry ist nun wohl nicht gerade jedermann's Stärke... Deshalb habe ich das ganze mal programmiert und hoffe, dass es überall zuverlässig funktioniert. Daher ausdrücklich die Warnung:
Verwendung auf eigene Gefahr! Wer den UDMA-Modus bei defektem Laufwerk oder Kabel wieder aktiviert, muss u.U. mit Datenfehlern rechnen.
Das Programm durchsucht den angegebenen Registry-Pfad und listet erkannte IDE-Kanäle auf. Hierbei suche ich nach den Gerätekennungen (MatchingDeviceId) "primary_ide_channel" und "secondary_ide_channel". In diesen Zweigen wird dann beim Klick auf "OK" für die Kanäle, die ein Häkchen gesetzt bekommen, der Registry-Eintrag mit Wert 1 eingefügt. Das Löschen des Häkchens bewirkt das Löschen des Eintrages bei Klick auf "OK". Sollte der Eintrag vorhanden sein, aber einen anderen Wert als 1 haben, wird ein graues Feld angezeigt.
Hat jemand zufällig mehrere IDE-Controller eingebaut (z.B. per PCI-Steckkarte)? Da würde mich interessieren, wie es bei ihm strukturiert ist.