Wissen wie schnell eine Festplatte in Delphi ist

8

Ich schreibe ein Diagnoseprogramm (wie Everest, aber einfacher) und ich muss wissen, wie schnell ein HardDrive ist. Ich möchte Dinge wie wissen:

1 - Bytes pro Sekunde (lesen)
2 - Bytes pro Sekunde (schreiben)
3 - S.M.A.R.T Daten

Ich denke, ich kann WMI verwenden, um solche Dinge abzufragen, aber ich habe keine Ahnung, wie. Es spielt keine Rolle, ob ich eine Komponente kaufen oder eine Open Source kaufen muss. Ich weiß auch, dass Windows Perfmoon das kann, aber ich kann es nicht benutzen.

    
Rafael Colucci 05.04.2011, 21:06
quelle

1 Antwort

11

Rafael, um die S.M.A.R.T Daten zu erhalten, können Sie die WMI oder die Windows API verwenden.

Verwenden des WMI

Die WMI classes to obtain S.M.A.R.T Daten sind

  • MSSorageDriver_ATAPISmartData
  • MSSorageDriver_FailurePredictData
  • MSSorageDriver_FailurePredictStatus
  • MSStorageDriver_FailurePredictThresholds
  • MSStorageDriver_ScsiInfoExceptions

Alle befinden sich im Namensraum root\WMI . Leider sind diese Klassen nicht sehr gut dokumentiert.

mit WINAPI

Um auf die SMART-Daten von der Windows-API zuzugreifen, ist ein wenig mehr Arbeit erforderlich. Sie müssen die DeviceIoControl und CreateFile Funktionen übergeben die jeweiligen Strukturen zum Halten der Daten. Sie können viele Beispiele davon auf dem Netz finden.

Um die Geschwindigkeit einer Festplatte zu berechnen

Es gibt keine Windows API, die diese Informationen direkt verfügbar macht. also musst du das selbst berechnen. Für ein Beispiel können Sie diese Anwendung DISKSPEED überprüfen, die den Quellcode in C ++ enthalten. Sie verwenden die Funktion CreateFile , die das Flag FILE_FLAG_NO_BUFFERING (000000) setzt, um festzulegen, welche Schreib- und Lesevorgänge in der Datei ausgeführt werden direkt gemacht werden, ohne gepuffert zu werden.

    
RRUZ 06.04.2011, 04:45
quelle