Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi HDD Standby verhindern - Mediaplayer pause (https://www.delphipraxis.net/143769-hdd-standby-verhindern-mediaplayer-pause.html)

Cylence 23. Nov 2009 12:09

Re: HDD Standby verhindern - Mediaplayer pause
 
Hi,

die interne ist die selbe wie die 3 externen, die externen schalten sich selbst aus, unabhängig von den Windows Energie Optionen. Dies ist ganz normal bei manchen externen Platten, ist abhängig vom Controller.
Ich möchte dohc nicht die Energieoptionen umstellen, sondern nur die Platte die eh gleich wieder verwendet wird aktiv halten. Das wäre für die Lebensdauer der Festplatten besser... wenn auch manche anders denken, aber für jede halbe std oder 10 Minuten die platte aus und einschalten, ist sicher nicht besser als sie die paar minuten einfach aktiv zu halten.
Ich weiß auch das ich auf einige externe Platten garkeinen zugriff auf Smart Infos hab, dies ist wieder auch abhängig vom verbauten ControllerChip.
Also wieso schaltet sich die platte ab obwohl ich fileexists bzw getfilesize mache? Ist dies auch im Cache von Windows irgendwie? So das garkein Zugriff auf die platte erfolgt wenn ich eine der funktionen aufrufe?


Gruß

tom

himitsu 23. Nov 2009 12:15

Re: HDD Standby verhindern - Mediaplayer pause
 
Zitat:

Zitat von Cylence
Also wieso schaltet sich die platte ab obwohl ich fileexists bzw getfilesize mache? Ist dies auch im Cache von Windows irgendwie? So das garkein Zugriff auf die platte erfolgt wenn ich eine der funktionen aufrufe?

Zitat:

Das Dateisystem landet immer in der WindowsFileCache
Also alle möglichen gelesenen Verzeichnisse und die darin enthaltenen Informationen über die Dateien.

Cylence 23. Nov 2009 12:24

Re: HDD Standby verhindern - Mediaplayer pause
 
ok

danke und was gäbe es denn für eine mögliche funktion die wirklich aus dem filesystem liest, womit dann eben die platte aktiv gehalten würde? Ist nur eine Datei schreiben und wieder löschen oder sowas eine möglichkeit? Oder würde selbst das evtl nur im Cache ablaufen dann?

lg

tom

Medium 23. Nov 2009 13:36

Re: HDD Standby verhindern - Mediaplayer pause
 
Theoretisch kann Windows sich immer dazu entscheiden Dateioperationen verzögert auszuführen, also zunächst im Cache. Vielleicht ergibt eine Suche nach Möglichkeiten diesen manuell zu flushen/invalidieren einen Weg. Eine größere Datei zu schreiben könnte u.U. auch gehen (wenn diese die Grenzen des Cache überschreitet auch gesichert - ich weiss nur nicht wie groß der ist), jedoch ist das alles andere als toll. Zum einen würde ich als Anwender nicht wollen dass mir ein Programm - dass es von der Funktion her nicht erwarten ließe - wild Zeug wo hin schreibt, zum anderen ist da das Problem mit Schreibrechten, UAC und Virtualisierung...

Cylence 23. Nov 2009 13:52

Re: HDD Standby verhindern - Mediaplayer pause
 
ja das seh ich ja auch so :-(
daher hab ich ja erst versucht einfach nur fileexists zu machen, aber das reicht ja leider nicht. schade eigentlich.

himitsu 23. Nov 2009 14:58

Re: HDD Standby verhindern - Mediaplayer pause
 
Zitat:

Zitat von Medium
ich weiss nur nicht wie groß der ist

Wenn man diese nicht begrenzt hat (was standardmäßig der Fall ist), dann ist das der gesamte verfügbare RAM.

Wie ließt denn dein Player diese Datei?
Wie gesagt, ließ einfach neue Daten ein, bevor das Abspielen beginnt.

Medium 23. Nov 2009 15:02

Re: HDD Standby verhindern - Mediaplayer pause
 
Und wenn dann da einer kommt (Windows z.B.) und sowas wie Prefetching betreibt? (Ich weiss echt nicht ob das der Fall ist, ich will nur sagen dass das auch nicht SO unbedingt der goldene Weg ist.) Ich würd echt mal gucken, ob es nicht eine API gibt, die Windows unmissverständlich klar macht, dass ein Aufruf auf keinen Fall aus dem Cache beantwortet werden soll - u.U. durch erzwungenes Leeren.

himitsu 23. Nov 2009 15:05

Re: HDD Standby verhindern - Mediaplayer pause
 
Prefetching ... jaja, wir kennen wohl alle diese kranken "angeblichen" RAM-Booster :nerd:

Zitat:

Zitat von Medium
Ich würd echt mal gucken, ob es nicht eine API gibt, die Windows unmissverständlich klar macht, dass ein Aufruf auf keinen Fall aus dem Cache beantwortet werden soll

> NonBuffered-FileIO (siehe MSDN-Library durchsuchenCreateFile)

Cylence 23. Nov 2009 15:29

Re: HDD Standby verhindern - Mediaplayer pause
 
Hi,

der Player liest die Datei mit hilfe des DSPacks, nach dem Pause ist auch die zeit die noch abgespielt wird immergleich auf verschiedenen PCs immer ca 2 sec noch, dann ist Ende. Ich glaub nicht das die ganze Datei in den RAM geladen wird, bzw das Windows das macht... Windows lädt zwar ab VISTA tatsächlich fast den gesamten RAM voll, aber da sind andere Files drinnen, nicht Videos die abgespielt werden, ich denke das is eher für Programm und Systemdateien etc...
Ok dann anderer ansatz, wie kann ich denn bevor ich wieder Play mache...warten bis die Platte tatsächlich aktiv ist??? Ich mache einen Fileexists, aber das reagiert ja auch ohne aktive Platte, also ist das auch nicht so leicht hinzu bekommen...

Gruß

tom

himitsu 23. Nov 2009 18:29

Re: HDD Standby verhindern - Mediaplayer pause
 
dann wird das DSPack wohl einen 2-sekündigen Puffer nutzt

so, und Folgendes hätte man sich ganz leicht, mit Hilfe des MSDN, zusammensetzen können.
Delphi-Quellcode:
Var H: THandle;
  Buf: Array[0..4095] of Byte;
  W:  LongWord;

H := CreateFile(PChar(Dateiname), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
ReadFile(H, Buffer, 4094, W, nil);
CloseHandle(H);
Die 4 KB sind Absicht.
Denn, wie man im MSDN gelesen haben sollte, muß man hier in ganzen Sektoren lesen.
(Festplatte/USB-Stick/Speicherkarten = 512 Byte pro Sektor und CD/DVD = 4 KB pro Sektor)

Da ReadFile nun direkt ließt, muß die Platte erstmal hochfahren, bevor es weitergeht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.
Seite 2 von 3     12 3      

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