Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > BIOS.


Автор: flamer 16.4.2002, 08:19
Не подскажете, как записать информацию в память BIOS`a?

Автор: Sheff 16.4.2002, 15:54
Есть DLL'ки, которые это делают, поищи на каких-нибудь серваках по программированию. Если хочешь, могу скинуть на этот форум пример на VB, который читает инфу из биоса, он использует библиотеку vbrun60.dll

Автор: flamer 16.4.2002, 18:27
Нет, мне вообще-то надо из под-ДОСа.Но пример на VB скинь, буду премногоблагодарен.Если хочешь - можешь мне его на емаил послать. (flamerhell@mail.ru)

Автор: Sheff 16.4.2002, 21:26
Вот, держи:
Код
Option Explicit
'Get the Bios number and serial details?
'Code adapted from ww.freeVBcode.com by Arkadiy Olovyannikov
'Functions in visual basic virtual machine (runtime dlls)
Private Declare Sub GetMem1 Lib "msvbvm50.dll" (ByVal _
  MemAddress As Long, var As Byte)

'You can read Integer (2 bytes), Long and LongInteger variables
'using GetMem2, GetMem4 and GetMem8 functions
'Private Declare Sub GetMem2 Lib "msvbvm50.dll" (ByVal _
' MemAddress As Long, var As Integer)
'Private Declare Sub GetMem4 Lib "msvbvm50.dll" (ByVal _
' MemAddress As Long, var As Long)
'API has LongInteger var type 8 bytes long (FileTime is a _
' sample)
'----------------------
Private Function GetBIOSDate() As String
 Dim p As Byte, MemAddr As Long, sBios As String
 Dim i As Integer
 'start of bios serial number ?&HFE0C0
 MemAddr = &HFE000
 For i = 0 To 331
     Call GetMem1(MemAddr + i, p)
     'get printable characters
     If p > 31 And p <= 128 Then
     sBios = sBios & Chr$(p)
   End If
 Next i
 GetBIOSDate = sBios
End Function
'Using
'Text1.Text = GetBiosDate

'Private Declare Sub GetMem8 Lib "msvbvm50.dll" (ByVal _
' MemAddress As Long, var As LongInteger)

'You can also write data derectly into memory using the same
'PutMem1 - PutMem8 functions

Private Sub Form_Load()
Text1.Text = GetBIOSDate
End Sub

Автор: Vit 16.4.2002, 22:47
Ха! А где ж тут vbrun60.dll - она тут не причем - это только интерпретатор вижуалвасика, и к биосу не имеет никакого отношения. Хотя за код спасибо - посмотрим...

Автор: qaz 17.4.2002, 09:58
А как именно прописать в биос время и дату, при наступлении, которой нужно вызвать команду включения компа? (и какую именно команду)

Автор: flamer 17.4.2002, 14:31
Sheff, большое спасибо, за код, но вопрос все равно остается открытым.

Автор: Chingachguk 17.4.2002, 15:40
По этому поводу я видел много инфы на ... www.bios.ru.


ЗЫ У меня еще есть дока с кодом по поводу изменения картинки БИОС, но изучить внимательно времени не было. Скажу одно - это очень опасно ! Одна ошибка - и придется его перепрошивать ;)

Автор: flamer 17.4.2002, 16:31
Chingachguk, спасибо за ссылку.ИМХО - полезно.В процессе просматривания FAQ нашел такие вот строчки для сбрасывания установок AMI и AWARD:
DEBUG
-O 70 17
-O 71 17
Q
Как я понимаю - 70 и 71 это порты, а 17 и 17 - это значения, им передаваемые.
В таком случае - если записать в 70h и 71h значения, то можно изменить исходные значения настроек?
Чего-то здесь не то...
Или я все не так понял? ???

З.Ы.
Тащи доку, а прошивать тоже надо когда-нибудь учиться. :)

Автор: Chingachguk 17.4.2002, 18:50
Эээ... Не торопись так писать !!! Я точно не знаю, но это команды записи в CMOS ! Возможно, именно там и храниться то, что ты думаешь, но так вот писать ?!...

CMOS:

Имеет некоторую память (~32h байт).
Чтение/запись в ячейку CMOS:

out 70h,index_ячейки (0..)

; После этого обязательно сделать:

in al,71h ; Чтение

; Либо

out 71h,Value ; Запись


Например, индекс 0 - это текущая секунда (RTC)


ЗЫ А доку я могу тока мылом - она большая ;)

Автор: flamer 17.4.2002, 19:29
Па-асылай!;)

Автор: Chingachguk 18.4.2002, 01:29
Пардон, а куда ? ;)

Если хочешь, можешь сначала мне написать - я отвечу ... докой !

Автор: flamer 18.4.2002, 18:16
flamerhell@mail.ru :)
Я ж вроде уже писал.;)

Автор: Klerik0113 21.5.2008, 21:18
Подскажите как определить дату создания Bios

Автор: jonie 21.5.2008, 21:27
а ты думаешь такая где-либо хранится?

Автор: bronislav 22.5.2008, 08:47
Единственное, что ты можешь определить это версию прошивки имхо

Автор: MAKCim 22.5.2008, 09:20
смотрите SMBIOS
1. найти в 0xF0000-0xFFFFF строку _SM_ (4 байта)
(строка выровнена по 16-ти байтной границе)
2. по смещению 0x18 от строки расположен 32-х разрядный адрес таблицы структур SMBIOS
3. каждая структура начинается с заголовка (4 байта)
по смещению 0 расположено поле типа структуры (1 байт), по смещению 1 - ее размер включая заголовок (1 байт)
4. находим структуру с типом 0
5. по смещению 8 находим строку в формате dd/mm/yy - дату релиза

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)