Как читать из памяти в Windows XP
От: SergeKul  
Дата: 01.10.02 11:19
Оценка:
Уважаемые коллеги!

В Visual C++ 6.0 я определил функцию:

BYTE peekb(WORD segm, WORD offs)
{
return *(BYTE *) ((segm << 4) + offs);
}

Ее назначение -- считывать один байт из памяти по адресу segm:offs. Папример, для считывания первого байта, содержащего дату BIOS ее можно использовать так:

BYTE b = peekb(0xFFFF,0x0005);

Это нормально работает в Windows 98, но не работает в Windows XP.
Выдает run-time ошибку: First-chance exception in Code.exe: 0xC0000005: Access Violation.


Почему? И как добиться считывания даты BIOS в Windows XP?

Заранее благодарен за исчерпывающий ответ.
Re: Как читать из памяти в Windows XP
От: Vasiliy_Krasnokutsky Россия  
Дата: 01.10.02 11:29
Оценка: 1 (1)
Здравствуйте SergeKul,
Ты этого сделать не сможешь, поскольку каждый процесс может читать только свою область памяти ...
Или сделать свою программу работающей на уровне ядра, тогда можно читать любую память, но это очень непросто ...
Re: Как читать из памяти в Windows XP
От: __Nicolay Россия  
Дата: 01.10.02 12:09
Оценка:
Здравствуйте SergeKul, Вы писали:

SK>Уважаемые коллеги!


SK>В Visual C++ 6.0 я определил функцию:


SK>BYTE peekb(WORD segm, WORD offs)

SK>{
SK> return *(BYTE *) ((segm << 4) + offs);
SK>}

SK>Ее назначение -- считывать один байт из памяти по адресу segm:offs. Папример, для считывания первого байта, содержащего дату BIOS ее можно использовать так:


Если нужно используй GetSystemTime, GetLocalTime
Re: Как читать из памяти в Windows XP
От: Snax Россия  
Дата: 02.10.02 01:37
Оценка:
Здравствуйте SergeKul, Вы писали:

SK>BYTE b = peekb(0xFFFF,0x0005);

SK>Это нормально работает в Windows 98,
Интересно, каким образом это реализовано в Win9x

SK> но не работает в Windows XP. Выдает run-time ошибку:

SK>First-chance exception in Code.exe: 0xC0000005: Access Violation. Почему?

Потому, что память по этому адресу не пренадлежит текущему процессу.

SK>И как добиться считывания даты BIOS в Windows XP?


Проще всего — через WMI. Копай в сторону Win32_BIOS

Павел.
Re[2]: Как читать из памяти в Windows XP
От: Snax Россия  
Дата: 02.10.02 01:39
Оценка:
S>Проще всего — через WMI. Копай в сторону Win32_BIOS

Упс. Ошибочка вышла. Это мне проще.
А тебе наверно стоит заглянуть в реестр:

HKEY_LOCAL_MACHINE\HARDWARE\Description\System

Там все есть.

Павел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.