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