Schritt 2: Hardcore-Registry-Hacking
oder
Die Operation am offenen Hirnstamm
Voraussetzungen: Siehe Schritt 1.
Windows speichert seine Messungen und daraus resultierende "Einschätzungen" zur Qualität der angeschlossenen Datenträgergeräte in der Registry ab. Je nach den dort enthaltenen Werten und verwendeten Parametern läßt sich ein Laufwerk mit der Methode 1 wieder vom PIO-Modus auf den Ultra-DMA-Modus zurücksetzen.
Die Informationen liegen (beim Standard Microsoft IDE ATA/ATAPI-Treiber!!) unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}.
Bei NVIDIA- oder VIA-Chipsätzen (mit eigenen Treibern!!) könnten hier andere Pfade auftreten, die ich nicht kenne und daher hier auch nicht beschreiben kann. Vielleicht läßt sich dort aber eine abgeleitete Technik verwenden.
Die numerischen Unterzweige stellen jeweils den Controller dar, sowie die jeweiligen "Primären" und "Sekundären" IDE-Kanäle.
- 0000 ist dabei der erste Controller (meist IDE ATA/ATAPI)
- 0001 ist der erste primäre Kanal
- 0002 ist der erste sekundäre Kanal
Bei modernen Boards mit SATA Ports kommen dann noch
- 0003 für den zweiten Controller (SATA)
- 0004 ist der zweite primäre Kanal
- 0005 ist der zweite sekundäre Kanal
Wird ein Anschluß im System neu angelegt, ohne daß ein Gerät angeschlossen wird, dann enthält er nur die nachfolgenden Parameter und Werte (mein zweiter SATA-Port ist immer noch leer) für die einzelnen Anschlüsse:
"EnumPropPages32"="storprop.dll,IdePropPageProvider"
"InfPath"="mshdc.inf"
"InfSection"="atapi_Inst_secondary"
"ProviderName"="Microsoft"
"DriverDateData"=hex:00,80,62,c5,c0,01,c1,01
"DriverDate"="7-1-2001"
"DriverVersion"="5.1.2600.2180"
"MatchingDeviceId"="secondary_ide_channel"
"DriverDesc"="Sekundärer IDE-Kanal"
"MasterDeviceType"=dword:00000000
"MasterDeviceDetectionTimeout"=dword:00000001
"MasterDeviceTimingMode"=dword:00000000
"SlaveDeviceType"=dword:00000000
"SlaveDeviceDetectionTimeout"=dword:00000001
"SlaveDeviceTimingMode"=dword:00000000
Ein "renitenter" IDE-Anschluß weist dagegen auch noch weitere Parameter auf. Die nachfolgenden Parameter
- "MasterIdDataCheckSum"
- "MasterDeviceTimingMode"
- "MasterDeviceTimingModeAllowed"
- "UserMasterDeviceTimingModeAllowed"
(die es mit "Slave" auch noch mal für den Slave-Anschluß gibt) sind dabei die Ursache, für das Scheitern von Schritt 1. Ausgelöst wird das dadurch, daß ein interner Fehlerzähler mehr als 6 Fehler festgestellt hat und daher der ATAPI-Treiber eine Stufe heruntergesetzt wird.
Wenn man also alle IDE-Kanäle (im Bezug auf "Master"- und "Slave"-Parameter) auf die nachfolgenden 6 Parameter reduziert:
- "MasterDeviceType"=dword:00000000
- "MasterDeviceDetectionTimeout"=dword:00000001
- "MasterDeviceTimingMode"=dword:00000000
- "SlaveDeviceType"=dword:00000000
- "SlaveDeviceDetectionTimeout"=dword:00000001
- "SlaveDeviceTimingMode"=dword:00000000
dann gibt Windows beim nächsten Systemstart allen IDE ATA/ATAPI/SATA-Geräten die Chance, sich neu mit der Schnittstelle über Timings, Übertragungsraten und dergleichen auszutauschen.
Gibt man nun pro IDE-Kanal noch den Parameter
- "ResetErrorCountersOnSuccess" = dword:00000001
ein, dann wird der von Windows intern verwendete Fehlerzähler beim ersten erfolgreichen Lesevorgang wieder auf "0" gesetzt (was sonst nicht geschieht!!). Hierdurch tritt der Effekt des "Verlangsamens" des IDE-Kanals nicht mehr ganz so häufig auf. Näheres hierzu findet man bei
Microsoft.
Wie wichtig ein solcher Artikel gewesen wäre, sieht man übrigens
hier.