2009-05-13 4 views
6

Ich habe viele Festplatten in meinem Computer (7).Nach Code, wie kann ich eine Festplatte in den Ruhezustand senden

Wenn sie nicht verwendet werden, werden sie nach einiger Zeit durch die Stromversorgungsoption in den Ruhezustand versetzt. Aber weil alles viel Lärm macht, möchte ich sie in den Schlaf schicken, wenn ich will, nicht nur nach dem Standard-System-Timeout.

unter Windows (XP und höher), vorzugsweise in C#,

Wie kann ich von Code, der eine Scheibe schlafen schicken?

Vielen Dank im Voraus für Ihre Hilfe ...

+0

Sie könnten nur ein paar SSDs bekommen. :) – BobbyShaftoe

+0

WD Caviar Green ist eine gute und viel günstigere Alternative zu SSD. Sehr cool und ruhig. – Michael

+0

Ich bin mir sicher, dass es einen Weg gibt, es zu tun, es könnte ewig dauern, eine Antwort von jemandem zu bekommen, der es gut genug kennt. – thomasrutter

Antwort

0

ich ehrlich gesagt nicht glaube es ist nur möglich, C# zu tun, dass durch die Verwendung (das heißt der .NET-Framework).

Unabhängig davon würde ich durch Lernen über WMI und beginnen.

Dies ist die Art von Sache, die erfordert, dass Sie sich in eine niedrigere Sprache vertiefen (zumindest um die API-Aufrufe mit P \ Invoke zu finden), weil es in der Regel erfordert Interaktion eng mit dem Betriebssystem oder möglicherweise direkt mit einem Fahrer.

Vielleicht könnten Sie mit der Untersuchung der Windows Power Management Functions beginnen, obwohl ich glaube nicht, dass es die Kontrolle der einzelnen Festplatten ermöglicht.

+2

Während es möglicherweise keine native C# Möglichkeit gibt, dies zu tun, gibt es eine hohe Wahrscheinlichkeit, dass es immer noch von C# über PInvoke oder COM Interop gesteuert werden kann. –

+0

Ja, ich habe eine Korrektur vorgenommen. Was ich sagen wollte ist, dass es wahrscheinlich ist, dass Sie in nativem C++ nach einer Lösung suchen müssen und dann die Implementierung mit P \ Invoke in C# portieren müssen. –

+0

letztes Mal, als ich setpowerstate mit wmi überprüfte, sagte es, es sei nicht implementiert. auch, Sie haben Recht, es scheint, ich kann einzelne Laufwerke mit den Power-Management-Funktionen nicht steuern. oder zumindest weiß ich nicht, wie es geht. Last, ich nehme eine Lösung in jeder Sprache, wenn ich nicht die Wahl habe ... – Jonx

1

Ich weiß nicht von der API, um dies direkt zu tun, aber es gibt Tools, die es tun können. Eine, die ich gesehen habe, ist Hard Disk Sleeper. Ich habe es nicht auf meinen eigenen Maschinen verwendet, so kann ich nicht zu seiner Qualität oder Wirksamkeit sprechen.

+0

das Tool stammt aus den 99er und es sieht aus wie es ist eine Shareware (lesen, kann nicht mehr verwendet werden), aber danke ich bevorzuge Code ... – Jonx

+0

Schaut auch auf IDE/EIDE-Laufwerke beschränkt. –

+0

Vielleicht habe ich einen Hinweis hier: http://smartmontools.sourceforge.net/ http://hdparm-win32.dyndns.org/hdparm/ leider bin ich fest, wie es scheint, dass meine Festplatten können ' Verwenden Sie dieses Zeug, da sie RAID sind und es Smart/ATA/SATA-Festplatten oder spezifische RAID-Behandlung benötigt. – Jonx

1

Dies ist möglich, wenn Sie ATA-Befehle über IOCTL_ATA_PASS_THROUGH direkt an ein Laufwerk senden. Sie müssen den SLEEP-Befehl übergeben.

Ich glaube nicht, dass dies ein Projekt für C# ist.

+0

irgendeine Probe, wie man das benutzt? in jeder Sprache;) die msdn-Seite hilft nicht viel ... soll das in Treibern verwendet werden oder kann es in User-Mode-Programmen verwendet werden? – Jonx

1

AFAIK, dies ist ein ATA-Befehl, der die * Spin-Down-Zeit8 einstellt - was bedeutet, dass das Laufwerk selbst herunterfährt. Sie könnten IOCTL_ATA_PASS_THROUGH verwenden, um Befehle direkt an das Laufwerk zu senden - aber ich fürchte, Sie würden nicht besser machen, als es auf einen minimalen Wert zu setzen (was ich nicht weiß, was es ist, aber es sollte in den ATA-Spezifikationen sein)).

Edit: Sieht aus wie die ehrwürdigen hdparm supports it, so dass es in der ATA-Spezifikation sein muss:

-y ein IDE-Laufwerk erzwingen, um sofort den niedrigen Stromverbrauch im Standby-Modus zu gelangen, in der Regel so dass es nach unten drehen, .

-Y Zwingt ein IDE-Laufwerk, sofort in den Energiesparmodus mit dem niedrigsten Stromverbrauch zu wechseln, wodurch es vollständig heruntergefahren wird. Ein Hard- oder Soft-Reset ist erforderlich, bevor auf das Laufwerk erneut zugegriffen werden kann (der Linux-IDE-Treiber behandelt automatisch ein Zurücksetzen, falls/falls erforderlich).

Seit hdparm (und der zugrunde liegende Linux-Kernel es mit dem Antrieb kommuniziert) ist GPL - Sie sollen die Besonderheiten von dort in der Krippe der Lage sein, wenn Sie nicht über eine ATA-Spezifikation zur Hand haben.

Oder verwenden Sie einfach die win32 port.

+0

Das bedeutet auch, dass es nur mit ATA/SATA-Platten und dergleichen funktioniert? Danke für die Notiz, dass die Festplatte von selbst heruntergefahren wird und dass Sie nur die Ausfallzeit einstellen können ... – Jonx

+0

Ja - es ist nur für ATA-Laufwerke. Wenn Sie SCSI haben, müssen Sie einen SCSI-Stop-Unit-Befehl senden. Linux hat hierfür scsi-tools und scsi-idle. –

Verwandte Themen