Einzelnen Beitrag anzeigen

c.wuensch

Registriert seit: 19. Dez 2004
Ort: Münster
96 Beiträge
 
#1

Festplatten-Standby und Status auslesen

  Alt 13. Jul 2008, 23:16
Hi an alle,

ich habe mir in den Kopf gesetzt, ein Programm zu realisieren, das eine angeschlossene Festplatte in den Standby-Modus versetzen kann. Außerdem soll es den aktuellen Power-Status aller Platten (aktiv / gestoppt) anzeigen können.

Ich habe mich bereits intensiv mit der Thematik beschäftigt, und jede Menge vielversprechende Ansätze gefunden. Nur komm ich mit der Programmierung nicht zurecht. Wär super, wenn mir da jemand ein bisschen helfen könnte

Also, was hab ich schon:

1.) Man muss wohl unterscheiden zwischen IDE-Platten und anderen (z.B. über S-ATA oder USB angeschlossenen) Platten. (Bei letzteren unterstützt der Controller wohl immer ein SCSI-Interface).
Für beide Arten gibt es je ein portiertes Linux-Tool (hdparm für IDE und sg_start für SCSI), welches die jeweilige Platte in Standby schickt. Es ist also zumindest möglich.

2.) Zur Not könnte ich diese Tools also aus meinem Delphi-Programm heraus aufrufen, um den Effekt zu erreichen, aber eine selbst programmierte Lösung wäre mir lieber...
Außerdem fehlt auf jeden Fall noch eine Möglichkeit, den Power-Status bei einer SCSI-Platte auszulesen (das kann sg_start nämlich nicht).

3.) Ich vermute, dass für solche Aktionen die API-Funktion DeviceIoControl nützlich sein dürfte. Und hierbei speziell zum Beispiel IOCTL_SCSI_PASS_THROUGH. Kann mir einer sagen, wie man die anwendet?
Interessant wäre da v.a. der SCSI-Befehl Start / Stop Unit

4.) Gibt es vielleicht irgendwelche SCSI-Befehle, die den Power-Status einer Platte auslesen können?

5.) Es gibt für DeviceIoControl auch die Konstante IOCTL_ATA_PASS_THROUGH. Vielleicht lässt sich darüber auch was für IDE-Platten machen? Und kennt jemand die entsprechenden ATA-Befehle?

6.) Hier gab es noch einen interessanten Tipp, der vorschlägt, DeviceIoControl mit dem Parameter SetFeature aufzurufen. Darüber finde ich jedoch keinerlei Dokumentation...


So... Kann mir denn irgendjemand aus den vorhandenen Ansätzen Tipps geben, wie ich weiter vorgehen könnte? Bin echt für jede Hilfe dankbar!!!
  Mit Zitat antworten Zitat