知道硬盘驱动器在Delphi中的速度有多快

时间:2011-04-05 21:06:57

标签: delphi winapi wmi hardware hard-drive

我正在编写一个诊断程序(如珠穆朗玛峰,但更简单),我需要知道HardDrive的速度有多快。我想知道的事情如下:

1 - 每秒字节数(读取)
2 - 每秒字节数(写入)
3 - S.M.A.R.T数据

我想我可以使用WMI来查询这样的事情,但我不知道怎么做。如果我需要购买组件或获得开源组件并不重要。我也知道Windows Perfmoon能够做到这一点,但我无法使用它。

1 个答案:

答案 0 :(得分:11)

Rafael获取S.M.A.R.T数据,您可以使用WMI或Windows API。

使用WMI

WMI classes to obtain S.M.A.R.T数据

  • MSStorageDriver_ATAPISmartData
  • MSStorageDriver_FailurePredictData
  • MSStorageDriver_FailurePredictStatus
  • MSStorageDriver_FailurePredictThresholds
  • MSStorageDriver_ScsiInfoExceptions

所有这些都位于root\WMI命名空间中。不幸的是,这些课程没有很好的记录。

使用WINAPI

要从Windows API访问S.M.A.R.T数据需要更多工作,您必须使用通过相应结构的DeviceIoControlCreateFile函数来保存数据。您可以在net上找到许多此类示例。

计算硬盘的速度

没有直接公开此信息的Windows API。所以你必须自己计算一下。例如,您可以检查此应用程序DISKSPEED,其中包含C ++中的源代码。他们使用CreateFile函数设置FILE_FLAG_NO_BUFFERING ($20000000)标志,以便在不进行缓冲的情况下直接完成对文件句柄的任何写入和读取。