Ich arbeite für ein Unternehmen, das weltweit viele Maschinen im Besitz von Kunden hat, von denen wir kontinuierlich Diagnosen benötigen. Eines der Probleme ist, dass die Festplatten der Maschinen gelegentlich in den PIO-Modus wechseln, was der Kunde aber natürlich nur mit einer massiven Systemverlangsamung zu kämpfen hat.
Ich suche nach einer Möglichkeit, mit unseren Diagnosetools festzustellen, ob eine SATA-Festplatte in den PIO-Modus gewechselt ist. Dies kann entweder ein Tool oder ein Befehl sein, den wir ausführen und dessen Ausgabe wir speichern können, um sie später in einem Dump zusammenzufassen, den wir per E-Mail vom Kunden erhalten, oder programmgesteuert über eine Windows-API.
Es muss so automatisch wie möglich erfolgen. Ich habe versucht, „devcon.exe“ (Gerätemanager für die Befehlszeile) zu verwenden, habe aber nicht herausgefunden, wie ich diese Informationen ausgeben kann, selbst wenn ich Informationen über die Festplattencontroller erhalte.
Irgendwelche Ideen?
Antwort1
(Hierbei wird PowerShell unter Windows 7 verwendet. Nach der Installation von PowerShell sollten Sie jedoch in der Lage sein, dieselben Dinge unter Windows XP zu tun.)
Abrufen des WMI-Objekts, das einem bestimmten IDE-Gerät zugeordnet ist (sowohl PATA als auch SATA werden auf dieser Ebene als IDE behandelt):
$ide = new-object "system.management.managementobject" 'Win32_IDEController.DeviceID="PCIIDE\\IDECHANNEL\\4&5ECF4F&0&0"'
(In diesem Fall habe ich früher devmegmt.msc
den „Geräteinstanzpfad“ für einen SATA-Kanal mit einer angeschlossenen Festplatte erhalten, aber dieser kann abgefragt werden.)
Aber diesesWin32_IDEController
Das Objekt enthält keine Informationen zu den PIO/DMA-Einstellungen. Auch die Suche in den WMI-Verknüpfungen bringt nichts zustande (bis zu mehreren Ebenen).
Es scheint nichts in WMI zu geben, das den Inhalt der Registerkarte „Erweiterte Einstellungen“ des Geräte-Managers in WMI widerspiegelt.
4&5ECF4F&0&0
Über das letzte Element aus dem Pfad oben ( ) kann ich jedoch in der Registry unter:
HKLM:\SYSTEM\CurrentControlSet\Enum\PCIIDE\IDEChannel\4&5ecf4f&0&0\Device Parameters\Target0
Werte (vor allem DeviceType
), die sich hier für ein PIO-Modus-PATA-DVD-RW-Laufwerk unterscheiden. Ich kann jedoch nicht schnell eine Definition für diese Werte finden.
Antwort2
VielleichtDashilft Ihnen beim Erstellen von VBScript zur Lösung Ihres Problems und enthält eine Erklärung, wie DMA mit möglichen Lösungen auf PIO zurückgreift.
Und Sie können auch ein wenig überprüfen aufWindows-WMIC-Befehle , Zum Beispiel "wmic DMAchannel abrufen / Wert", um Ihre Informationen abzurufen und sie in einen „Shell“-Befehl für Ihren Code und für eine mögliche Automatisierung Ihrer Windows-API einzufügen.