Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Festplatteninaktivität erkennen (https://www.delphipraxis.net/169674-festplatteninaktivitaet-erkennen.html)

blablab 4. Aug 2012 03:11

Festplatteninaktivität erkennen
 
Hallo!

Ich würde gerne eine inaktive (externe) Festplatte erkennen. Das bedeutet ich müsste irgendwie herausfinden, wann das letzte mal von der Festplatte gelesen oder darauf geschrieben wurde. Wie könnte ich da vorgehen?

Grüße
blablab

Horst0815 4. Aug 2012 10:27

AW: Festplatteninaktivität erkennen
 
sollte ueber WMI gehen kann dir aber nix genaueres sagen sitz mit dem smartphone im auto

Edit: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

RWarnecke 4. Aug 2012 12:47

AW: Festplatteninaktivität erkennen
 
Eine Festplatte wird ja über die Energieoptionen inaktiv geschaltet. Dazu gibt es eventuell eine Windows Message, die man abfangen könnte oder vielleicht auch sogar auslesen kann.

hathor 4. Aug 2012 14:39

AW: Festplatteninaktivität erkennen
 
Die Festplatte kann auch autonom das Energiemanagement verwalten.
Das kann man ändern mit smartctl.
http://sourceforge.net/apps/trac/sma.../wiki/Download

blablab 5. Aug 2012 18:42

AW: Festplatteninaktivität erkennen
 
Ich hab das etwas undeutlich beschrieben...
Ich will nicht auslesen, ob Windows die Festplatte ausgeschaltet hat, sondern selbst erkennen, ob die Festplatte nicht genutzt wird. Eigentlich ist die Idee wirklich gut, aber leider unterstützt meine Festplatte das Ausschalten nicht.

blablab 10. Aug 2012 12:20

AW: Festplatteninaktivität erkennen
 
Hat niemand eine Idee?
Ich find einfach nichts gescheites. Es gibt z.B. die Möglichkeit mit FindFirstChangeNotification Änderungen mitzubekommen, aber dann kriege ich nichts mit, wenn nur gelesen und nicht geschrieben wurde. Und Hooks sind glaube ich deshalb schwer, weil es verschiedene Möglichkeiten gibt auf Dateien zuzugreifen. Nicht jedes Programm nutzt ReadFile und WriteFile. Und nach einem Wert, der wie GetLastInputInfo einfach nur die letzte Zugriffszeit zurückgibt, habe ich auch schon stundenlang gesucht. Aber auch hier komm ich nicht weiter, es ist wirklich frustrierend! :( :cry: :(

p80286 10. Aug 2012 13:07

AW: Festplatteninaktivität erkennen
 
Wir hatten vor Urzeiten mal Iomega-Wechselplatten im Einsatz, die brauchten ca 5-10sec um wieder anzulaufen. Das war nervig aber ansonsten problemlos.
Willst Du Deine Nerven schonen oder was ist der Hintergrund Deiner Frage.

Gruß
K-H

blablab 11. Aug 2012 00:02

AW: Festplatteninaktivität erkennen
 
Ich hab 4 Externe Festplatten, die ich alle nur gelegentlich mal benutze (so 1-2 mal die Woche für nur wenige Stunden). Danach vergesse ich sie oft auszuschalten. Das bedeutet ich hab im schlechtesten Fall 4 Festplatten, die den ganzen Tag lang laufen aber kein einziges Mal benutzt werden. Deshalb würde ich gerne erkennen, wenn eine Platte zum Beispiel 1h lang nicht benutzt wurde und dann in irgendeiner Weise darauf hinweisen, dass die Festplatte xy ausgeschaltet werden sollte.

Ich hab bereits versucht bei Windows einzustellen dass die Festplatten nach 10min ausgeschaltet werden, aber das funktioniert nicht. Und ein spezielles Programm das nur dazu da ist um Festplatten schlafenzulegen meldete, dass die Platten das nicht unterstützen. Wobei es mir eigentlich auch lieber wäre ich könnte die Festplatten komplett ausschalten, also den Stecker ziehen, da sie oft tagelang nicht gebraucht werden.

Einfach nur nach 2-3h eine Meldung bringen, hilft mir leider nicht wirklich weiter, weil es sein kann dass ich eine Festplatte für 10min oder auch für 10h benutze.

Ich hab mir auch schon überlegt statt nach der (In)Aktivität der Festplatte könnte ich auch nach (In)Aktivität des USB-Anschlusses an dem die Festplatte angeschlossen ist schauen. Allerdings scheint das das Problem nicht wirklich zu vereinfachen. Also zusammengefasst: Egal wie ichs versuche, ich komm einfach nicht weiter...

hathor 11. Aug 2012 06:03

AW: Festplatteninaktivität erkennen
 
GetLastInputInfo hat nichts mit Festplatten zu tun:
Es werden nur Tastatur- und Maus-Ereignisse ausgewertet, d.h. der Timer wird auf Null gesetzt.

hathor 11. Aug 2012 07:11

AW: Festplatteninaktivität erkennen
 
Wie in #4 schon geschrieben, kann man das Power Management mit SMARTCTL ändern.
Eine Festplatte, die KEIN Power Management hat, gibt es nicht! Es wird bei Dir ausgeschaltet sein.

Du brauchst smartmontools-5.43-1.win32-setup.exe, da ist es enthalten.
http://smartmontools.sourceforge.net


Befehlsliste:
smartctl -h

Einige Beispiele:

smartctl -g apm C:
APM feature is: Disabled
--------------------------------------------------------------------
smartctl -s apm,off C:
APM Disabled
--------------------------------------------------------------------
smartctl -s apm,1 C: <-- empfehlenswert für Dich!
APM set to level 1 (minimum power consumption with standby)
--------------------------------------------------------------------
smartctl -s apm,64 C:
APM set to level 64 (intermediate level with standby)
--------------------------------------------------------------------
smartctl -s apm,128 C:
APM set to level 128 (minimum power consumption without standby)
--------------------------------------------------------------------
smartctl -s apm,192 C:
APM set to level 192 (intermediate level without standby)
--------------------------------------------------------------------
smartctl -s apm,254 C:
APM set to level 254 (maximum performance)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz