четверг, 24 сентября 2015 г.

MSACPI_ThermalZonetemperature не возращает инфу.

MSACPI_ThermalZonetemperature не возращает инфу.

[code]
On Error Resume Next
Err.Clear
Set objWMI=Getobject("winmgmts:{impersonationLevel=impersonate}!\\.\root\wmi")
If Not Err.Number=0 Then Wscript.Echo "-1": Wscript.Quit
Err.Clear
Set colItems=objWMI.ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature")
If Not Err.Number=0 Then Wscript.Echo "-1": Wscript.Quit
If colItems.Count=0 Then Wscript.Echo "0": Wscript.Quit
For Each obj In colItems
strCPU=(obj.CurrentTemperature-2731)/10
strCPU=Replace(strCPU,",",".")
Wscript.Echo strCPU
'Wscript.Quit
Next
[/code]

ОК, курим доки. Win32_TemperatureProbe тоже молчит.
Курим дальше.
[code]
Set objWMI = GetObject("winmgmts:\\.\ROOT\wmi")
Set col = objWMI.ExecQuery("select * from MSSmBios_RawSMBiosTables")
For each obj in col
a=Split(string(obj.Size,","),",")
a=obj.SMBiosData
For i=0 to Ubound(a)-2
If a(i)=0 and a(i+1)=0 and a(i+2)=28 Then
Table28Offset=i+2
Table28Length=a(i+3)
End If
Next
Next

Wscript.Echo "Table Offset: " & Table28Offset
Wscript.Echo "Table Length: " & table28Length
For i=Table28Offset+2 To Table28Offset+Table28Length
aa=""
aa=hex(a(i))
If Len(aa)=1 Then aa="0" & aa
msg=msg & aa & " "
Next
Wscript.Echo msg
[/code]
mssmbios_rawsmbiostables - кажется, то что надо. Раскуриваем формат и смотрим значения с помощью прилагаемой на сайте разработчиков smbios утилиты и, внезапно, BIOS пишет значения 8000, которые, судя из дока DTMF, значат Unknown.