/ / Wie kann ich per Festplatte ein Festplattenlaufwerk in den Ruhezustand versetzen - c #, Windows, Hardware

Wie kann ich per Festplatte ein Festplattenlaufwerk in den Ruhezustand versetzen - c #, Windows, Hardware

Ich habe viele Festplattenlaufwerke in meinem Computer (7).

Wenn sie nicht verwendet werden, senden Sie sie mit der Stromoptionnach einer Weile schlafen Da jedoch alles sehr laut ist, würde ich sie gerne in den Ruhezustand versetzen, nicht nur nach dem Standard-Timeout des Systems.

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

Wie kann ich eine Festplatte per Code in den Ruhezustand versetzen?

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

Antworten:

1 für die Antwort № 1

Ich kenne die API nicht, um dies direkt zu tun, aber es gibt Tools, die dies tun können. Eine, die ich gesehen habe, ist Festplattenschläfer. Ich habe es nicht auf meinen eigenen Maschinen verwendet, daher kann ich nicht auf seine Qualität oder Wirksamkeit eingehen.


1 für die Antwort № 2

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

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


1 für die Antwort № 3

AFAIK, dies ist ein ATA-Befehl, der den * Spin festlegtdown time8 - bedeutet, dass das Laufwerk selbst heruntergefahren wird. Sie können IOCTL_ATA_PASS_THROUGH verwenden, um Befehle direkt an das Laufwerk zu senden. Sie wissen nicht, was es ist, aber es sollte in den ATA-Spezifikationen stehen.

Edit: Sieht aus wie das ehrwürdige hdparm unterstützt es, so muss es in der ATA-Spezifikation sein:

-y Erzwingen, dass ein IDE-Laufwerk sofort in den Standby-Modus mit niedrigem Stromverbrauch wechselt, wodurch es normalerweise zum Herunterfahren kommt.

-Y Erzwingt die sofortige Eingabe eines IDE-LaufwerksDer Energiesparmodus mit dem niedrigsten Stromverbrauch wird vollständig heruntergefahren. Ein Hard- oder Soft-Reset ist erforderlich, bevor erneut auf das Laufwerk zugegriffen werden kann (der Linux-IDE-Treiber führt automatisch ein Reset durch, falls erforderlich).

Schon seit hdparm (und der zugrunde liegende Linux-Kernel, der zur Kommunikation mit dem Laufwerk verwendet wird) ist GPL - Sie sollten die Besonderheiten von dort aus abrufen können, wenn Sie keine ATA-Spezifikation zur Hand haben.

Oder benutzen Sie einfach die Win32-Port.


0 für die Antwort № 4

Ich glaube nicht, dass es möglich ist, dies zu tun, indem nur C # (d. H. Das .NET-Framework) verwendet wird.

Unabhängig davon würde ich damit anfangen WMI und ACPI.

Dies ist in der Regel das, was erforderlich istSie müssen in eine niedrigere Sprache eintauchen (zumindest um die API-Aufrufe zu ermitteln, die mit PInvoke verwendet werden sollen), da dies normalerweise eine enge Interaktion mit dem Betriebssystem oder möglicherweise direkt mit einem Treiber erfordert.

Vielleicht könnten Sie damit anfangen, das zu untersuchen Windows Power Management-Funktionen Ich glaube jedoch nicht, dass es die Steuerung der einzelnen Festplatten ermöglicht.