Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

S.M.A.R.T. HDD Temperatur in vb.Net

Frage Entwicklung Visual Studio

Mitglied: waldgnarf

waldgnarf (Level 1) - Jetzt verbinden

19.01.2011, aktualisiert 20:56 Uhr, 5688 Aufrufe, 2 Kommentare

Hallo, ich bin dabei ein Programm zu basteln was mir die Temperatur meiner Festplatte ausliest.
Es funktioniert auch alles sehr gut nur weiss ich nicht wie man eine Funktion refreshen kann.
Ich benutze ein Timer aber der refresht die ausgelesenen Daten nicht.

01.
Imports System.Runtime.InteropServices 
02.
 
03.
Public Class Form1 
04.
    Dim NUMMER As Integer 
05.
 
06.
 
07.
    Public Enum ReadSmart_Results 
08.
        DRIVE_DOES_NOT_EXIST 
09.
        ACCESS_DENIED 
10.
        NO_SMART_AVAILABLE 
11.
        SUCCEEDED 
12.
    End Enum 
13.
    Public Enum Attributes 
14.
        SMART_ATTRIB_Invalid = 0 
15.
        SMART_ATTRIB_AIRFLOW_TEMPERATURE = 190 
16.
        SMART_ATTRIB_HDA_TEMPERATURE = 194 
17.
    End Enum 
18.
    Private Const IOCTL_STORAGE_PREDICT_FAILURE As Integer = &H2D1100 
19.
    Private Const STATUS_INVALID_DEVICE_REQUEST As Integer = &HC0000010 
20.
    Private Const FILE_SHARE_NONE As Short = 0 
21.
    Private Const OPEN_EXISTING As Short = 3 
22.
    Private Const INVALID_HANDLE_VALUE As Short = -1 
23.
    Private Const GENERIC_READ As Integer = &H80000000 
24.
    Private Const GENERIC_WRITE As Integer = &H40000000 
25.
    Private Const FILE_SHARE_READ As Integer = 1 
26.
    Private Const FILE_SHARE_WRITE As Integer = 2 
27.
    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As IntPtr, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As IntPtr) As IntPtr 
28.
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As IntPtr) As Boolean 
29.
    Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As IntPtr, ByVal dwIoControlCode As Integer, ByRef lpInBuffer As IntPtr, ByVal nInBufferSize As Integer, <Out()> ByVal lpOutBuffer As STORAGE_PREDICT_FAILURE, ByVal nOutBufferSize As Integer, ByRef lpBytesReturned As Integer, ByVal lpOverlapped As IntPtr) As Integer 
30.
    Public DRIVES, BEZEIC As String() 
31.
    Dim STRLA1, STRLA2, STRLH1, STRLH2 As String 
32.
    Dim INTOFF, INTATT, INTVAL, INTWOR, INTDAT As Integer 
33.
    Dim INTLAU As Integer = 0 
34.
    Dim LISVIE As ArrayList 
35.
    Public SmartData As STORAGE_PREDICT_FAILURE 
36.
    Public Function GetPhysicalDrives() 
37.
        Dim COLITE As Object 
38.
        Dim A As Integer 
39.
        COLITE = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_DiskDrive") 
40.
        DRIVES = New String(COLITE.count - 1) {} 
41.
        BEZEIC = New String(COLITE.count - 1) {} 
42.
        A = 0 
43.
        For Each OBJITE In COLITE 
44.
            DRIVES(A) = OBJITE.deviceid() 
45.
            BEZEIC(A) = OBJITE.caption 
46.
            If A = 0 Then LATEH1.Text = BEZEIC(A) 
47.
            If A = 1 Then LATEH2.Text = BEZEIC(A) 
48.
            A += 1 
49.
        Next 
50.
        Return COLITE.Count 
51.
    End Function 
52.
    Public Function ReadSmart(ByVal STRLAU As String) As ReadSmart_Results 
53.
        Dim DEVICE As IntPtr 
54.
        Dim RESULT As Boolean 
55.
        Dim RETBYT As Integer 
56.
        SmartData = New STORAGE_PREDICT_FAILURE 
57.
        DEVICE = CreateFile(STRLAU, GENERIC_READ, FILE_SHARE_READ, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero) 
58.
        If DEVICE.ToInt32 = INVALID_HANDLE_VALUE Then 
59.
            If Marshal.GetLastWin32Error = 5 Then 
60.
                Return ReadSmart_Results.ACCESS_DENIED 
61.
            Else 
62.
                Return ReadSmart_Results.DRIVE_DOES_NOT_EXIST 
63.
            End If 
64.
        End If 
65.
        RESULT = DeviceIoControl(DEVICE, IOCTL_STORAGE_PREDICT_FAILURE, IntPtr.Zero, 0, SmartData, Marshal.SizeOf(SmartData), RETBYT, IntPtr.Zero) 
66.
        CloseHandle(DEVICE) 
67.
        If RESULT Then 
68.
            Return ReadSmart_Results.SUCCEEDED 
69.
        Else 
70.
            Return ReadSmart_Results.NO_SMART_AVAILABLE 
71.
        End If 
72.
    End Function 
73.
 
74.
    Public Sub GetSmartValue(ByVal INTOFF As Integer, ByRef INTATT As Integer, ByRef INTVAL As Integer, ByRef INTWOR As Integer, ByRef INTDAT As Integer) 
75.
        If SmartData.VendorSpecific(INTOFF) = 190 Or SmartData.VendorSpecific(INTOFF) = 194 Then 
76.
            Dim STRINT As String = "" 
77.
            For Z As Integer = 11 To 5 Step -1 
78.
                STRINT &= Hex(SmartData.VendorSpecific(INTOFF + Z)) 
79.
            Next 
80.
            INTDAT = Convert.ToInt64(STRINT, 16) 
81.
            INTLAU += 1 
82.
            If SmartData.VendorSpecific(INTOFF) = 190 Then 
83.
                If INTLAU < 3 Then 
84.
                    STRLA1 = "AIR" & " / " & INTDAT & " / " & NUMMER 
85.
                Else 
86.
                    STRLA2 = "AIR" & " / " & INTDAT 
87.
                End If 
88.
            Else 
89.
                If INTLAU < 3 Then 
90.
                    STRLH1 = "HDA" & " / " & INTDAT 
91.
                Else 
92.
                    STRLH2 = "HDA" & " / " & INTDAT 
93.
                End If 
94.
            End If 
95.
        End If 
96.
    End Sub 
97.
    Public Sub SMAARR(ByVal LISVIE As ArrayList, ByVal INTIND As Integer) 
98.
        For A As Integer = 0 To 29 
99.
            GetSmartValue(A * 12 + 2, INTATT, INTVAL, INTWOR, INTDAT) 
100.
        Next 
101.
    End Sub 
102.
 
103.
 
104.
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
105.
        Dim B As Integer = GetPhysicalDrives() - 1 
106.
        For C As Integer = 0 To B 
107.
            ReadSmart(DRIVES(C)) 
108.
            SMAARR(LISVIE, C) 
109.
        Next 
110.
 
111.
        LABLA1.Text = STRLA1 
112.
        LABLA2.Text = STRLA2 
113.
        LABLH1.Text = STRLH1 
114.
        LABLH2.Text = STRLH2 
115.
    End Sub 
116.
End Class 
117.
 
118.
<StructLayout(LayoutKind.Sequential)> Public Class STORAGE_PREDICT_FAILURE 
119.
    Public PredictFailure As Integer 
120.
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=512)> Public VendorSpecific() As Byte 
121.
    Sub New() 
122.
        VendorSpecific = New Byte(511) {} 
123.
    End Sub 
124.
End Class
Grüße waldgnarf
Mitglied: 76109
19.01.2011 um 22:39 Uhr
Hallo waldgnarf!

Keine Ahnung von vb-net, aber finde ich in Deinem Code keinen Hinweis auf das setzen des <Timer1.Interval = 0815> und den <Timer1.Start()>?

Gruß Dieter
Bitte warten ..
Mitglied: waldgnarf
20.01.2011 um 09:23 Uhr
Oh welch peinlicher Fehler.

01.
        Timer1.Enabled = True 
02.
        Timer1.Interval = 100
Im Timer1 geschrieben und es Funktioniert.

THX

Grüße waldgnarf
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Visual Studio
gelöst VB.Net - Problem mit Umleitung der Standard-Ausgabe (4)

Frage von emeriks zum Thema Visual Studio ...

Visual Studio
gelöst Vb.net Pfadangabe mit Wildcards wie Stern Regex Pattern (2)

Frage von Pilger83 zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...