Wie kann ich feststellen, ob sich eine Festplatte dreht (unter Windows)?

8

Wie kann ich programmatisch feststellen, ob sich eine Festplatte gerade dreht oder nicht (Windows 7 oder höher)?

Ich habe GetDevicePowerState() versucht, aber es gibt immer TRUE (immer 1, nicht ein anderer Wert ungleich Null) für Laufwerke, von denen ich weiß, dass sie sich gerade nicht drehen (sowohl für interne als auch für USB-Laufwerke). Unmittelbar nachdem GetDevicePowerState() TRUE zurückgibt, höre ich, wenn ich dir d: in einer Konsole ausspreche, dass das Laufwerk hochfährt und es eine Verzögerung von mehreren Sekunden gibt, bevor die Verzeichnisliste generiert wird.

Mein Code muss prüfen, ob ein Verzeichnis auf einem Laufwerk vorhanden ist. Die Überprüfung kann zurückgestellt oder übersprungen werden, wenn das Laufwerk gerade heruntergefahren ist. Ich möchte vermeiden, die Überprüfung auf einem heruntergefahrenen Laufwerk aus zwei Gründen zu machen: 1) die Überprüfung wird derzeit synchron durchgeführt und ich möchte nicht, dass der Benutzer warten muss, bis das Laufwerk hochfährt. 2) Ich will nicht veranlaßt das Laufwerk, sich zu drehen, nur um meinen Scheck zu machen (hoffentlich ist es offensichtlich, warum nicht).

Gibt es eine Möglichkeit, dies zu tun?

Aktualisierung basierend auf Kommentaren:

Es wurde vorgeschlagen, dass GetDevicePowerState mit physischen Gerätenamen arbeitet, aber ich kann nicht etwas anderes als 1 zurückgeben (wieder, für Laufwerke, die ich verifiziert habe, drehen sich NICHT). Der folgende Code ist der Code, den ich verwende. Wenn GetDevicePowerState tatsächlich dafür bekannt ist, mit USB-Laufwerken zu arbeiten, ist da vielleicht etwas mit meinen Argumenten zu CreateFile nicht in Ordnung?

%Vor%     
Not Submitted 11.03.2014, 18:33
quelle

1 Antwort

1

Wie ich es gerne sage, erzähl mir nichts über den Fehler - erzähle mir von dem, was du erreichen willst.

  

Mein Code muss prüfen, ob ein Verzeichnis auf einem Laufwerk vorhanden ist

OK, wenn das das Endziel ist, stellt Windows eine API namens FindFirstChangeNotification bereit. Sie können die Change Notification-APIs verwenden, um einen Thread hochzufahren und zu überwachen, wenn sich Dateien oder Verzeichnisse ändern.

Ссылка

    
Jason De Arte 02.03.2016 18:56
quelle

Tags und Links