Tipp 0055 Bios-Daten auslesen
Autor/Einsender:
Datum:
  Detlev Schubert
11.05.2001
Entwicklungsumgebung:   VB 5/6
Es wird immer wieder behauptet, dass es mit VB nicht möglich ist, auf den Speicher zuzugreifen. Dass dies jedoch sehr wohl ab VB 5 und sogar recht komfortabel möglich ist, zeigt dieser Tipp mittels der nicht dokumentierten Funktion GetMem1 aus der Laufzeitbibliothek. Mit dieser Funktion können einzelne Bytes aus dem Speicher, und somit auch aus dem BIOS-Speicherbereich gelesen werden. Leider halten sich nicht alle BIOS-Hersteller an vorgegebene Standards, so dass bei einigen und vor allem älteren BIOS-Varianten ein Auslesen nicht ohne weiteres möglich ist.
Wichtiger Hinweis
Die Funktion GetMem1 funktioniert NUR bei den Betriebssystemen Windows 95/98 und ME. Da die auf einem NT-Kern basierenden Betriebssysteme keine direkten Speicherzugriffe zulassen, führt der Einsatz dieser Funktion u.U. zu einem sofortigen Systemabsturz.
Alle nicht gespeicherten Daten gehen damit verloren!!!
 
Option Explicit

Private Declare Sub GetMem1 Lib "msvbvm60.dll" (ByVal _
      MemAddress As Long, var As Byte)

Private Function GetBIOSDate(MemAddr As Long, _
      laenge As Integer) As String
  Dim p As Byte, sBios As String
  Dim i As Integer

  For i = 0 To laenge
    Call GetMem1(MemAddr + i, p)
    sBios = sBios & Chr$(p)
  Next i
  GetBIOSDate = sBios
End Function

Private Sub Command1_Click(Index As Integer)
  Select Case Index
    Case 1
      Label1(1).Caption = GetBIOSDate(&HFE061, 30)
      Label1(2).Caption = Trim$(GetBIOSDate(&HFE091, 43))
      Label1(3).Caption = GetBIOSDate(&HFEC71, 45)
      Label1(5).Caption = GetBIOSDate(&HFFFF5, 7)

      If InStr(1, Label1(1).Caption, "BIOS") <= 1 Then
         Label1(1).Caption = GetBIOSDate(&HFF400, 12)
         Label1(2).Caption = GetBIOSDate(&HFF450, 31)
         Label1(3).Caption = GetBIOSDate(&HFF478, 39)

        If InStr(1, Label1(1).Caption, "BIOS") <= 1 Then
            Label1(1).Caption = "nicht zu ermitteln"
            Label1(2).Caption = "nicht zu ermitteln"
            Label1(3).Caption = "nicht zu ermitteln"
        End If
      End If

    Case Else
      Unload Me
      End
  End Select
End Sub
 
Weitere Links zum Thema
CPU-Daten ermitteln (WMI)

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (2,3 kB) Downloads bisher: [ 4394 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Mittwoch, 31. August 2011