首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

小弟我终于获取到硬盘Smart信息了,但不会解读,请各位帮忙

2012-03-23 
我终于获取到硬盘Smart信息了,但不会解读,请各位帮忙。我终于获取到硬盘Smart信息了,但不会解读,请各位帮忙

我终于获取到硬盘Smart信息了,但不会解读,请各位帮忙。
我终于获取到硬盘Smart信息了,但不会解读,请各位帮忙。

代码:

VB code
Option ExplicitDim WMI As Object, Objs As Object, Obj As Object, Bian()Private Sub Form_Load()    Set WMI = GetObject("WinMgmts:root\WMI")    Set Objs = WMI.ExecQuery("SELECT * FROM MSStorageDriver_ATAPISmartData")    For Each Obj In Objs        Bian = Obj.VendorSpecific    NextMsgBox Join(Bian)End Sub


得到了如下结果:

10 0 1 15 0 116 100 142 234 190 6 0 0 0 3 3 0 95 95 0 0 0 0 0 0 0 4 50 0 99 99 190 5 0 0 0 0 0 5 51 0 100 100 0 0 0 0 0 0 0 7 15 0 81 60 48 238 206 8 0 0 0 9 50 0 94 94 216 22 0 0 0 0 0 10 19 0 100 100 0 0 0 0 0 0 0 12 50 0 99 99 252 5 0 0 0 0 0 187 50 0 100 100 0 0 0 0 0 0 0 189 58 0 100 100 0 0 0 0 0 0 0 190 34 0 56 51 44 0 26 44 0 0 0 194 34 0 44 49 44 0 0 0 12 0 0 195 26 0 57 48 165 148 14 2 0 0 0 197 18 0 100 100 0 0 0 0 0 0 0 198 16 0 100 100 0 0 0 0 0 0 0 199 62 0 200 200 0 0 0 0 0 0 0 200 0 0 100 253 0 0 0 0 0 0 0 202 50 0 100 253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我还看到了以下这段话:第一个和第二个字节代表 SMART 版本信息,从第三个字节起定义 SMART 的属性,每个属性为12字节长,每个属性的第一字节为当前属性定义,0x09 定义已经使用的小时数, 0xc2 为温度属性,第五字节表示当前温度。

我发现这些数字好像都是小于255的,请问如何从这些数字得到硬盘温度、硬盘使用时间。
我的硬盘用了5848小时,温度44度。


[解决办法]
参考
http://www.codeproject.com/KB/winsdk/Hard_drive_Information.aspx
[解决办法]
搜索“硬盘Smart信息”
[解决办法]
不会,ding
[解决办法]
其实这是一个结构,第一个和第二个字节代表 SMART 版本信息,从第三个字节起定义 SMART 的属性,每个属性为12字节长,每个属性的第一字节为当前属性定义,0x09 定义已经使用的小时数, 0xc2 为温度属性,

其实这些属性已经包含在你代码的那个obj变量里面了

挑选几个你可能用到的属性,改改代码

VB code
Private Sub Form_Load()    Set WMI = GetObject("WinMgmts:root\WMI")    Set Objs = WMI.ExecQuery("SELECT * FROM MSStorageDriver_ATAPISmartData")    For Each Obj In Objs        Debug.Print "Active:" & vbTab & Obj.active        Debug.Print "TotalTime:" & vbTab & Obj.TotalTime        Debug.Print "InstanceName:" & vbTab & Obj.InstanceName        Debug.Print "SelfTestStatus:" & vbTab & Obj.SelfTestStatus    NextEnd Sub 

热点排行