对硬盘中的S.M.A.R.T.信息分析 --by coperator
1.读取硬盘中S.M.A.R.T.信息
Option Explicit Dim varRet Private Sub kxlGetSMARTInfo() DIM WMI Dim Objs Dim Obj Set WMI = GetObject("WinMgmts:root\WMI") Set Objs = WMI.ExecQuery("SELECT * FROM MSStorageDriver_ATAPISmartData") If Objs.count <> 0 Then For Each Obj In Objs varRet = Obj.VendorSpecific Next End If End Sub Wscript.Echo "=================== Test Start ===================" Call kxlGetSMARTInfo() Wscript.Echo Join(varRet) Wscript.Echo "=================== Test End ===================="
源码 1-1
2.读取到本地磁盘信息
图2-1
3.金山卫士显示的硬盘温度为44 摄氏度的信息
图3-1
4.我主要参考的有
维基百科 :http://en.wikipedia.org/wiki/S.M.A.R.T.
其中提到的是
194 | 0xC2 | Temperature resp. Temperature Celsius |
|
Current internal temperature. |
表4-1
但是我这其中有
图 4-1
有几处都是44,我没有弄清楚到底应该是具体的那一位是才是真正的C2(194)位
无论怎样查找都不能把 任何一个 44 数到194。
5.各种搜集资料
当然我有求助:金山 爱毒霸社区 发帖了
http://bbs.duba.net/thread-22964625-1-1.html
同时我也在用其他软件测试,后来用了 鲁大师 得到的信息如下
图 5-1
还是没有找到具体的应该是哪个 44才是真正的 硬盘温度。
6.我把得到的信息进行了自己分析参考的
硬盘 SMART 检测参数详解[转] http://www.cnblogs.com/york-hust/p/3380928.html (--注:我没有找到原文)
似乎发现的点什么?好像是序号并非连续的!!!
我在次看了一下维基百科 http://en.wikipedia.org/wiki/S.M.A.R.T.
是的,序号并非连续。
问题1:至于为什么不连续我还没有弄清楚?
不管它那个了,我还是按照我得出的结果,与实际的温度对比吧。
7.得到一致的数据信息
经过几次对 44的比对,我得出的结果基本如下
图 7-1
是不是找到了C2(194) = 44。
好像和鲁大师的到的第一列是一样的啊!哈哈!有点不淡定了,高兴!
但是这毕竟是自己按照结果逆推的,不具有说服力呀!
8.网上找资料
我无意间发现鲁大师官网提供了一篇帖子
关于S.M.A.R.T. http://bbs.ludashi.com/thread-440828-1-1.html###
感觉很好,仔细看了一下。发现一个词 “阈值鲁大师(原:Z武器)官方论坛) `' Q ]" c, ]” 我的理解就是某个参数的上限或下限(用词可能不专业)。 我发现好像鲁大师的第二列 和 图 7-1 中方块圈起来的数字后面的那个值是一样的啊!难倒是,我推出的数据是正确的?半信半疑吧!
9. 关键资料
http://www.t13.org/Documents/UploadedDocuments/docs2005/e05171r0-ACS-SMARTAttributes_Overview.pdf
这上面都是英文的,但是还是被我发现了关键的两个表
图 9-1
声明:我的英文不是很好,如果有错误,仅是我个人的理解,不代表希捷,想深入理解请看希捷官方文档。
希捷是有 0-361字节(共用362字节,用十六进制表示为000h-169h)用来表示数据信息的,并且复合y=2+12x线性方程,其中自变量x的取值范围是[0,29],因变量y的取值范围是[0,361]。
我的理解是这样的,我不太会用金山的这个 WPS表格,我是用如下程序进行计算的
#include <stdio.h> void main() { char szTemp[10]; for(int i =0; i <= 361; i ++) { sprintf(szTemp, "%d(%2X)",i,i); printf("%s\n", szTemp); } getchar(); }
源码9-1
注意:如果用VS2010算出的结果可能不全,因为默认的MS-DOS窗口是300行,所以只显示了部分。我的做法是通过Win+R然后进入对应的EXE目录,然后更改高度为:500,然后就能显示全部结果了。
图 9-2
之后将我的理解,填入WPS表格中,形成如下
图 9-3
图9-4
经过我的分析,得出如下
图 9-5
至此,基本可以判断,我的猜测是正确的。