我终于获取到硬盘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