Forum: PC-Programmierung NoHDSleep - Festplatte auf Knopfdruck "schlafen" legen


von Daniel A. M. (amad) Benutzerseite


Angehängte Dateien:

Lesenswert?

Servus!

Da sich mein hiermit vorgestelltes Programm auch bei Freunden als 
nützlich erwiesen hatte, dachte ich mir, ich stelle es hier mal einer 
breiteren Masse vor & gebe somit der Community dieses Forums, von 
welcher ich schon so viele interessante Dinge gelernt habe & Hilfe 
bekam, etwas zurück. ;)

>> Geschichte:
Alles begann mit dem Kauf einer SSD, wobei ich jedoch auch die 
Festplatte eingebaut ließ für seltener benötigte Daten.
Ich glaubte, nun kann ich endlich auf meinem Laptop (fast) lautlos 
arbeiten. Große Besserung brachte schonmal TPFanControl*1, mit welchem 
man den Lüfter leiser laufen lassen kann, welches mich ua. für dieses 
Programm inspirierte.
Jedoch fand ich auch nach langem Suchen keinen Weg, die nach wie vor 
eingebaute Festplatte bei Bedarf ein & ausschalten zu können. Komplett 
deaktivieren wäre zwar im Gerätemanager oder DevCon*2 möglich, jedoch 
bringt dies auch Probleme mit anderen Programmen mit sich.
Einstellen des Ausschaltintervalles im Energiemanager bringt schon mal 
einiges, ist aber auf Dauer auch nicht so gut, wenn das zu oft passiert.
Ich dachte mir, es wäre doch schön, wenn man das genau dann, wann man 
will, per Mausklick erledigen könnte.
Unter Linux ist das ja mit einer Zeile a 'la "hdparm -Y /dev/hda" 
schnell erledigt...
Das angefügte Programm soll dies auch für Nutzer von Windows (ab XP) 
leicht ermöglichen.

>> Funktionsweise:
Es zeigt durch ein Icon im Systray (in der taskbar notification area) 
an, ob sich eine Festplatte im Standby-Modus befindet. -
(Coole ThinkPads lassen ihr ThinkLight kurz blinken beim Wechsel ;))

Durch einen Linksklick auf das Symbol kann ihr ein Schubser gegeben 
werden für einen Versuch, sie in Standby zu schicken & bleiben zu 
lassen.
Dies funktioniert, wenn kein Programm mehr auf sie zugreift (kein 
File-Handle mehr offen ist & der Cache geleert ist; Dafür gibts eigene 
Programme)
Das Gleiche kann durch einen Rechtsklick auf das Symbol & anschließendem 
Linksklick auf den Menüpunkt "Let's Sleep" versucht werden.
Durch das Vorhandensein eines Häkchens beim Menüpunkt "Sleeping" ist 
ebenfalls ersichtlich, ob's im Standby-Modus is.
Unter "Info" ist ebendieser Beschreibungstext zu finden & mit "Tschüss" 
kickt man dieses oh so ressourcenhungrige Programm aus dem RAM.

Als Parameter erwartet das Programm natürlich den UNIX-Devicenamen der 
Festplatte a'la /dev/hda, ohne Angabe nimmts ebendiese.
Außerdem rennt ohne Administratorrechte auch ned grad viel.
(ua. kann es mithilfe von SuRun*3 auch mit einem normalen Useraccount 
benützt werden & man muss nicht bei jedem Systemstart die Erlaubnis, es 
als Admin zu starten erneut geben - Bei Bedarf reiche ich eine Anleitung 
dazu nach)

>> Installation:
Einfach die .zip entpacken & das Programm per beigefügter Verknüpfungen 
starten.
Wenn das Programm bereits läuft, kann durch erneuten Aufruf ein Sleep 
Kommando abgesetzt werden - praktisch, wenn man das Programm mit einer 
HotKey-Taste belegt! A 'la *4. Ich weiß, muss ja nicht jeder ein 
ThinkPad haben. ;)

>> Disclaimer:
Ich übernehme keine Haftung für Schäden jeglicher Art, die durch 
Benützung dieses Programmes entstehen könnten! Benutzung somit auf 
eigene Gefahr!

>> Kontakt & Weiteres:
Fragen, Anregungen, Verbesserungsvorschläge usw. am besten hier, oder 
falls es nur an mich gehen soll, bitte an NoHDSleep (ät) gmx [punkt] at
Wenn mir jemand sagen kann, wie ich außer durch ständiges Abfragen 
lassen herausfinden kann, ob Windows die Festplatte aus dem Sleep-Modus 
holt, würde ich mich sehr freuen!
& Falls sich jemand künstlerisch betätigen mag, kann er gerne zwei 
schönere 16x16 Pixel Icons für den Status malen. ;)

Schöne Grüße & ruhigeres Arbeiten am PC,
Daniel A. Maierhofer

*
1. http://www.staff.uni-marburg.de/~schmitzr/donate.html
2. 
http://social.technet.microsoft.com/wiki/contents/articles/181.how-to-manage-device-drivers-with-command-line.aspx
3. http://kay-bruns.de/wp/software/surun/
4. http://thinkwiki.de/ThinkVantage_Taste_manuell_belegen

von Jim M. (turboj)


Lesenswert?

Daniel M. schrieb:
> Einstellen des Ausschaltintervalles im Energiemanager bringt schon mal
> einiges, ist aber auf Dauer auch nicht so gut, wenn das zu oft passiert.

Mal in die Spec einer vernünftigen Notebookplatte geschaut? Die 
vertragen einiges an Start/Stopp Zyklen.

Bei Desktopplatten sieht das allerdings anders aus.

: Bearbeitet durch User
von Mik (Gast)


Lesenswert?

Postest du bitte noch den Sourcecode zum Selbst-Kompilieren für 
ausspäh-ängstliche Benutzer!? Danke!

von Rolf Magnus (Gast)


Lesenswert?

Jim Meba schrieb:
> Daniel M. schrieb:
>> Einstellen des Ausschaltintervalles im Energiemanager bringt schon mal
>> einiges, ist aber auf Dauer auch nicht so gut, wenn das zu oft passiert.
>
> Mal in die Spec einer vernünftigen Notebookplatte geschaut? Die
> vertragen einiges an Start/Stopp Zyklen.
>
> Bei Desktopplatten sieht das allerdings anders aus.

Da sollte das doch eigentlich auch gehen, im Gegensatz zu Serverplatten, 
die für den Dauerbetrieb ausgelegt sind statt für häufiges Ein- und 
Ausschalten.

Übrigens: Warum heißt das Programm eigentlich NoHDSleep, wenn sein Zweck 
es ist, die Platte schlafen zu legen?

von g457 (Gast)


Lesenswert?

Augenscheinlich nutzt die exe die Funktionalität von MinGW und hdparm -> 
kann man auch ohne fremdes executable direkt von dort nutzen.

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

Achso, nein, ich wusste nicht, dass Festplatten das heutzutage / 
überhaupt ganz gut vertragen, zumal das ja auch einer der S.M.A.R.T. 
Paramter ist, welche ja ein Maß für den Abnutzungsgrad sind ;)

Ein weiterer Beweggrund war auch, eben mal schnell, wenn ich weiß, dass 
in nächster Zeit eine Erschütterung auftreten könnte, sie abzuschalten 
zu können.

Nunja, den Sourcecode poste ich vorerst noch nicht. Den vom AVRootloader 
oder eben TPFanControl, wo ich meine Funktionalität gleich von Grund auf 
hätte einbauen können & viel weniger Arbeit gehabt hätte, gibt es ja 
z.B. auch leider nicht zu haben. Für Verbesserungsvorschläge bin ich 
gerne offen!
Eventuell lass ich mich ja, wenn mir jemand das Problem der 
Notwendigkeit des ständigen Pollens lösen kann überreden. Also, dass 
Windows eine Art Callback schickt oä.
Sowie (das is zwar jetzt Off-Topic) ein Codeschnipsel, mit welchem man 
den Windows Vista / 7 - Präsentationsmodus aktivieren kann, aba nix 
billiges wie ein Sendkeys: Win+X, Alt+C, Win+X !

Genau so ist es. Eindeutig feststellbar kompiliert mit MinGW32 GCC 4.8.1 
& Nutzen der Funktionalität von hdparm, nur dass nicht alle paar ms 
ressourcenhungrig ein neuer hdparm Prozess gestartet werden muss...

Auf die Benachrichtigung, dass sie wegen eines Zugriffs nun 
eingeschaltet wird, wollte ich nicht verzichten, ansonsten reicht ein 
von mir erwähnter hdparm -y /dev/hd... Aufruf fürs Abschalten. Hmm, da 
fällt mir ein, soll ich einen PlaySound() Aufruf reingeben?

Ich wollte eine Namensgleichheit mit anderen Programmen vermeiden und 
benannte schon einige meiner kleinen "Windows-Helferlein" mit No 
beginnend.

von orwell (Gast)


Lesenswert?

Klasse Tool!

Ist es irgendwie möglich das du das ganze noch Autostart-Kompatibel 
under Windows 7 machst? Ich hab sowohl mit Adminrechten als auch mit dem 
Campatibility Administrator herumgespielt - leider ohne erfolg.

Ich muss dein Tool immer manuell starten.

von Daniel A. M. (amad) Benutzerseite


Angehängte Dateien:

Lesenswert?

Wie versprochen, auf Deine Anfrage hin, hier bitteschön eine Anleitung 
dafür, wie man NoHDSleep unter Windows 7 in den Autostart bekommt:

>Unter einem Administratoraccount:
•Rechtsklick auf NoHDSleep.zip, "Alle extrahieren...", mittels 
"Durchsuchen" den Ordner Computer>C:\Programme (x86)\ auswählen und 
"Neuen Ordner erstellen" namens NoHDSleep.
•Die folgende Zeile mit der Maus markieren und per Strg+C in die 
Zwischenablage kopieren:
"C:\Program Files (x86)\NoHDSleep\NoHDSleep.exe" /dev/hd?
(Wenn statt dem ? der jeweilige Buchstabe stehen würde, könnte man nur 
die Festplatte zu der der Buchstabe gehört steuern)
•Surun von http://kay-bruns.de/wp/software/surun/ installieren, wobei 
ich folgende Einstellungen empfehle:
>>Im Reiter "Allgemein":
•Bei "Shellintegration" würde ich alle Häkchen bis auf "Neustart als 
Administrator" weggeben, falls Ihr die weiteren Funktionen davon nicht 
benötigt.
•Häkchen bei Hilfestellungen: "Zeige Einstellungen für erfahrene Nutzer" 
setzten
>>Im Reiter "SuRunners-Gruppe":
•Auf oberes "Hinzu.." klicken und den gewünschten User auswählen.
•Alle Häkchen bis auf "Benutzer darf nur festgelegte Programme mit SuRun 
starten" weggeben.
•Auf unteres "Hinzu.." klicken und vorerst eine beliebige .exe-Datei 
auswählen.
•Die Zeile aus der Zwischenablage per Strg+V als "Befehlszeile" 
einfügen.
•"Das Programm automatisch mit erhöhten Rechten starten" sowie "Programm 
immer automagisch mit erhöhten Rechten starten" wählen und OK klicken.
>>Im Reiter "Erweitert":
•Häkchen bei "Frage Administratoren niemals ob sie in Gruppe 'SuRunners' 
aufgenommen werden wollen" setzen und bei "Ersetze Windows 'Ausführen 
als' weggeben.
•Speichern klicken, Administrator per "Abmelden" ausloggen und mit dem 
User einloggen.

>Unter dem Useraccount:
•Für die jeweilige Festplatte passende Verknüpfung aus C:\Program Files 
(x86)\NoHDSleep\ z.B. NoSleep_hda.lnk in den Autostart-Ordner kopieren, 
(wenn man als der User eingeloggt ist, dem dieser Ordner gehört, 
ansonsten könnte es Probleme geben, wenn der "Besitzer" ein andrer User 
wäre.)
•Mittels Rechtklick auf die Verknüpfung in den Eigenschaften das Ziel 
auf z.B.
C:\Windows\SuRun.exe "C:\Program Files (x86)\NoHDSleep\NoHDSleep.exe" 
/dev/hda
setzen sowie gleich eine Tastenkombination festlegen, um bequem die 
Festplatte anzuhalten.
(Denn wenn das Programm bereits läuft und man es nochmals mit dem 
gleichen Parameter z.B. /dev/hda startet wird ein "Let's Sleep" 
druchgeführt)

Anbei auch noch meine Konfigurationsdatei für SuRun (in welcher man noch 
unbedingt den Namen des Users von "daniel" auf den gewollten ändern 
muss), wobei obige Anleitung ebendiese als Ergebnis liefern sollte. 
(Speichern/Wiederherstellen in SuRun) -> SuRun Einstellungen können 
später in der Systemsteuerung aufgerufen werden.

Viel Erfolg bei dieser leider ein wenig komplizierten Vorgehensweise!

PS.:
Ich habe nun herausgefunden, wie man den Präsentationsmodus von Windows 
steuert, war lächerlich einfach...:
presentationsettings /start bzw. presentationsettings /stop

von tuk (Gast)


Lesenswert?

Sourcecode zum selber compilieren? Ich würde niemals aus möglicherweise 
unsicheren Quellen Software verwenden...

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

So, nach dem 100sten Download melde ich mich mal wieder.

Schade, immer dieses Misstrauen...

Wie gesagt, wenn mir jemand dabei helfen kann, dass ich nicht mehr 
ständig mit einem ioctl()-artigen Aufruf, so wie ihn auch hdparm 
verwendet den Status der Festplatte pollen muss sondern z.B. eine 
Window-Message oder etwas, das mir nicht bekannt ist, praktisch als 
"Event" benachrichtigt werde, wenn Windows die Festplatte durch einen 
Zugriff wieder "aufweckt", dann gebe ich den Sourcecode gerne her. So 
als Anreiz. -> Höchstwahrscheinlich braucht jemand, der mir da helfen 
könnte, denselbigen nicht, weil er dieses Programm ohnehin schnell 
selbst schreiben könnte.

& Wenn ich mir unsicher bei einem Programm bin, dann mach ich erstmal 
Jotti's Virenscan:
http://virusscan.jotti.org/de/scanresult/298a08f9796899b961ee243a5b77bf51d0757b61/6479359e6aafed6a0d60c52f2979d525295b83b8
Anschließend schau ich mir an welche DLL's vom Programm verwendet 
werden:
http://technet.microsoft.com/en-us/sysinternals/bb896656.aspx
& wenn ich dabei entdecken sollte, dass da winsock oä., das z.B. zum 
"Nachhaussefunken" verwendet werden könnte würde ich auch misstrauisch 
sein.
Ansonsten lass ichs dann noch in einer VM laufen & schau mir mit
http://www.rohitab.com/apimonitor
oder einem anderen ähnlichen Tool:
http://www.woodmann.com/collaborative/tools/index.php/Category:API_Monitoring_Tools
grob an, was sich da so tut oder am besten gleich disassemblen. :)
Ich glaube meine paar Programmzeilen kann man dann leicht 
nachprogrammieren. ;)

Hat schon jemand nach meiner Anleitung das Programm im Autostart zum 
Laufen bringen können?

von Nekomich (Gast)


Lesenswert?

Hey,

da du den Quelltext nicht freigeben möchtest hier meine Bitte um 
Verbesserung:
Ist es möglich 6 Festplatten auf einmal zu verwalten? Zur Zeit muss ich 
dein Programm 6 mal ausführen (für die Datendisks), da ich 7 Disks in 
meinem Rechner verbaut habe.

von Nase (Gast)


Lesenswert?

Wie verhält es sich denn lizenztechnisch, wenn du Teile von hdparm 
weiterverwendest?

Zumindest finde ich keinerlei Hinweise auf die BSD-Lizenz in deiner 
Distribution, unter der hdparm verteilt wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.