S.M.A.R.T. - считать температуру винчестеров

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

773FF
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 07.02.2008 (Чт) 10:51

S.M.A.R.T. - считать температуру винчестеров

Сообщение 773FF » 20.03.2008 (Чт) 9:38

Хочу программно измерять температуру винчестеров. Есть вот такой вот код:

Код: Выделить всё
Option Strict Off
Option Explicit On
Friend Class Form1
   Inherits System.Windows.Forms.Form
   
   Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
        Dim objItem As Object
      Dim colItems As Object
      Dim objWMIService As Object
      Dim strComputer As Object

      strComputer = "."

      objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")

      colItems = objWMIService.ExecQuery("Select * From MSStorageDriver_FailurePredictData")
      For   Each objItem In colItems


            If IsDBNull(objItem.VendorSpecific) Then
                Text1.Text = Text1.Text & vbCr & vbCr & vbCr & "VendorSpecific: " & vbCr & vbCr
            Else

                Text1.Text = Text1.Text & vbCr & vbCr & vbCr & "VendorSpecific: " & vbCr & vbCr
            'Распечатываем массив S.M.A.R.T.
                For i As Integer = 0 To 511
                    Text1.Text = Text1.Text & vbCr & "i = " & i & ", Значение = " & objItem.VendorSpecific(i)
                Next

            End If
      Next objItem
   End Sub
End Class


Но считываются только массивы данных S.M.A.R.T. для PATA (IDE) винчестеров, а вот хотелось бы знать темературу и SATA дисков. К тому же надо знать к какому винчестеру относится каждый массив атрибутов S.M.A.R.T.

Да ещё и адрес температуры в массиве зависит от версии структуры атрибутов.
Например:

I винчестер PATA

I = 0, Значение = 10 - версия структуры атрибутов


Температура

I = 100, Значение = 0 Пороговое
I = 101, Значение = 31 Текущее
I = 102, Значение = 53 Худшее

II винчестер PATA

I = 0, Значение = 16 - версия структуры атрибутов

Температура

I = 148, Значение = 0 Пороговое
I = 149, Значение = 157 Текущее
I = 150, Значение = 157 Худшее

А 157 Everest как-то пересчитывает и получает 35 град. цельсия.

Неясно сколько версий структуры атрибутов всего существует. Скачал исходник на Delphi, но и там данные с SATA-винчестеров не считываются.
Если есть знаток WMI или S.M.A.R.T. , то посоветуйте как быть.

773FF
Обычный пользователь
Обычный пользователь
 
Сообщения: 86
Зарегистрирован: 07.02.2008 (Чт) 10:51

Сообщение 773FF » 19.04.2008 (Сб) 18:01

Если кого-то интересует S.M.A.R.T., то советую копать в направлении "Select * From MSStorageDriver_FailurePredictData" (Google).
Накопал код с ошибкой, исправил и всё заработало как надо!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 96

    TopList