Top-Themen

Aktuelle Themen (A bis Z)

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, 5818 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 ..
Ähnliche Inhalte
Netzwerkmanagement
HDD S.M.A.R.T
Frage von PharITNetzwerkmanagement10 Kommentare

Hallo allerseits, kurze Frage. Gibt es ein gesondertes, kostenloes Tool, was auf den Rechnern die HDD Werte überwacht und ...

Windows Server
S.M.A.R.T. auf den Serverplatten
Frage von imacerWindows Server4 Kommentare

Hallo zusammen, ich nutze PRTG um unsere Infrastruktur zu monitoren. Nun ist auf allen Servern standardmäßig S.M.A.R.T. deaktiviert. Steckt ...

Hardware
Temperatur im Serverraum
Frage von thomasreischerHardware15 Kommentare

Hallo, aktuell kursieren ja viele Meinungen zum Thema Temperatur im Serverraum. Einige bleiben bei 18 Grad andere wiederum halten ...

SAN, NAS, DAS
S.M.A.R.T Fehler QNAP
Frage von Hendrik2586SAN, NAS, DAS11 Kommentare

Guten Tag an alle! :) Ich hab ein kleines Problem das ich gerne mal mit euch besprechen möchte. Ich ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 19 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement15 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...