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


Автор: RedShadow 15.12.2005, 20:29
В байте F000:FEEE хранится полезная(гм...) инфа о типе компа. ОК, пишем прогу:
Код

#include <iostream>
void main(void)
{
  char *comp=(char *)0xF000FFFE;
  cout<<"Your comp is ";
  switch (*comp)
   {
     case (char)0xff: cout<<"IBM PC.";break;
     case (char)0xfe: cout<<"IBM PC XT." ;break;
     case (char)0xfd: cout<<"IBM PCjr." ;break;
     case (char)0xfc: cout<<"IBM PC AT." ;break;
     default: cout<<"is...is...is...what is it?";
   }
}

Как нельзя читать?! smile Люди не пинайте новичка, помогите разобраться, как получить шо хранится в конкретном байте оперативки невзирая на происки гнусного Виндоза хэ пи!

Автор: Aleksandor 15.12.2005, 20:52
Ого, вспомним время золотое smile
Windows все таки посложнее будет чем монитор для бэкашки 86 года smile

Автор: RedShadow 16.12.2005, 07:16
Чтож, а кроме шуток, есть способ выцарапать значение этого несчастного байта или нет? Просто аналогичные проги на
асме и Паскале работали как надо.

Автор: Aleksandor 16.12.2005, 07:59
На Windows 98 и младших вроде можно, а на 2000 и XP
если байт в адресном пространстве режима ядра-то нет.

Автор: adonin 16.12.2005, 19:16
Тип компа можно почитать и в реестре, зачем лезть в чужое адресное пространство? Но если очень надо, то можно используя CreateRemoteThread() создать поток в интересующем Вас процессе, в этом потоке выполнить чтение байта. Передать своей проге значение байта можно используя средства ОС interprocess communications.

Автор: p0s0l 16.12.2005, 22:37
Если нужно прочитать биос, то это можно реализовать через секцию PhysicalMemory (маппим адрес 0xFF000, читаем 0xFFE), но имхо, всё-таки нужно пользоваться нормальными человеческими средствами...

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