Der Code funktioniert leider
nicht bei SATA-Platten, und solchen die über eine UDMA-Controller-Karte angeschlossen sind.
Hierbei könnte aber ein SCSI-Passthrough mit dem
hier erläuterten CDB helfen. Kann mir vielleicht jemand sagen, wie ich das programmieren könnte?
-------------
Außerdem habe ich mir gerade ein wenig den Quellcode zu hdparm angesehen (zu finden
hier).
Die Funktion zum Auslesen des Status sieht da so aus (bin nicht sicher, ob das alles ist):
Code:
if (get_powermode) {
__u8 args[4] = {ATA_OP_CHECKPOWERMODE1,0,0,0};
const char *state;
if (do_drive_cmd(fd, args)
&& (args[0] = ATA_OP_CHECKPOWERMODE2) /* (single =) try again with 0x98 */
&& do_drive_cmd(fd, args)) {
err = errno;
state = "unknown";
} else {
state = (args[2] == 255) ? "active/idle" : "standby";
}
printf(" drive state is: %s\n", state);
}
Kann damit jemand etwas anfangen? Bzw. könnte man das in Delphi so ähnlich machen?
Freue mich wie immer über jede Antwort!