我正在编写一个诊断程序(如珠穆朗玛峰,但更简单),我需要知道HardDrive的速度有多快。我想知道的事情如下:
1 - 每秒字节数(读取)
2 - 每秒字节数(写入)
3 - S.M.A.R.T数据
我想我可以使用WMI来查询这样的事情,但我不知道怎么做。如果我需要购买组件或获得开源组件并不重要。我也知道Windows Perfmoon能够做到这一点,但我无法使用它。
答案 0 :(得分:11)
Rafael获取S.M.A.R.T数据,您可以使用WMI或Windows API。
使用WMI
WMI classes to obtain S.M.A.R.T
数据
所有这些都位于root\WMI
命名空间中。不幸的是,这些课程没有很好的记录。
使用WINAPI
要从Windows API访问S.M.A.R.T数据需要更多工作,您必须使用通过相应结构的DeviceIoControl
和CreateFile
函数来保存数据。您可以在net上找到许多此类示例。
计算硬盘的速度
没有直接公开此信息的Windows API。所以你必须自己计算一下。例如,您可以检查此应用程序DISKSPEED
,其中包含C ++中的源代码。他们使用CreateFile
函数设置FILE_FLAG_NO_BUFFERING ($20000000)
标志,以便在不进行缓冲的情况下直接完成对文件句柄的任何写入和读取。