对硬盘中的S.M.A.R.T.信息分析

150 篇文章 0 订阅
31 篇文章 0 订阅

对硬盘中的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.

其中提到的是

1940xC2Temperature resp. Temperature Celsius
Lower
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

 

至此,基本可以判断,我的猜测是正确的。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值