Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Адресное пространство проги [D6, WinXP]


Alex_win ©   (2002-07-17 09:26:00) 

Уважаемые мастера извените, что повторяюсь, но что-то не вижу ни своих ни чьих-либо вопросов в этом форуме за 15,16 числа.
Подскажите как определить адреса моей и какой-либо любой другой работающей проги в оперативной памяти (начальный адрес, сегменты и т.д.)
Заранее спасибо.


Digitman   (2002-07-18 14:19:00) [1]

>Edmond

Да как тебе будет угодно)

P.S.
"Вот приедет барин, барин нас рассудит"))) ... стоило ли копаться в его словах...


Edmond   (2002-07-18 14:12:00) [2]

Digitman © (17.07.02 15:11)...
ОК!!! Не будем копаться в словах :).
Это неинтересно.


Digitman   (2002-07-18 14:07:00) [3]

>Edmond

Кто "он" ? Автор ? Да, он и написал - "память", причем уточнил - "оперативная". Заметь - не линейная, не виртуальная, не еще какая-то там, а именно - оперативная. А оперативная память, imho - далеко не виртуальная ...


Edmond   (2002-07-18 14:00:00) [4]

НЕТ!!!!!! Извините, но это неточность.
Цитата:
TMemoryBasicInformation.BaseAddress и TMemoryBasicInformation.AllocationBase возвращают виртуальные адреса, а не физические.

Вот если б он написал "память". Я согласен.
Но "Виртуальные адреса"....


Digitman   (2002-07-18 13:52:00) [5]

>Edmond

А тут автор как бы "оперативную память" упомянул. Как прикажешь ассоциировать это ? Думаю, что все-таки с физ.памятью, а не виртуальной. Потому как понятие "сегмент" фигурирует и в вирт. и в физ.модели АП


Edmond   (2002-07-18 13:31:00) [6]

Секундочку, что это за бред с виртуальными адресами и физическими!!!!!!!!!


Digitman   (2002-07-17 15:11:00) [7]

>watcher

Насчет возможностей на эту тему ф-ции VirtualQueryEx() ты ошибаешься.

TMemoryBasicInformation.BaseAddress и TMemoryBasicInformation.AllocationBase возвращают виртуальные адреса, а не физические.


watcher   (2002-07-17 14:41:00) [8]

вся информация возвращается простым вызовом VirtualQueryEx()
(и, если очень нужно, GetModuleBaseName()).

На практике это редко нужно, но бывает...
Да и вопрос так звучал.


Digitman   (2002-07-17 14:23:00) [9]

Физические адреса страничных сегментов можно, конечно, узнать, получив доступ к таблице GDT.
В Маздае это достаточно просто, на NT-платформах - весьма проблематично.

Но - зачем ? Каков практ.смысл сего для прикладных задач, решаемых в Делфи ?


watcher   (2002-07-17 14:09:00) [10]

to Edmond © (17.07.02 12:28)

GetModuleHandle() работает только в текущем процессе
+ нужно знать имя модуля. Можно конечно вызвать EnumProcessModules(), но зачем ?


Edmond   (2002-07-17 12:28:00) [11]

Ещё раз отвечаю:

HMODULE GetModuleHandle( PCTSTR pszModule);

Возвращает описатель, базовый адрес процесса, или DLL.
Если системе удаёться загрузить ваш процесс по установленному адресу, который обычно есть как 0x00400000, то эта функция вернёт именно 0x00400000.

Edmond


watcher   (2002-07-17 12:18:00) [12]

VirtualQuery(Ex) ()


Digitman   (2002-07-17 10:14:00) [13]

А это зачем ?


IlyaA   (2002-07-17 10:14:00) [14]

Реальные адреса ты не сможешь узнать (почитай про устройство функционирования Virtual Memory).

А так могу тебе сказать, что каждому процессу выдел. 4Гб адрессного пространства. Если не ошибаюсь, то первый Гб проецируется на адрессное пр-во ядра ОС, след. три для проги.


Наверх

Титульная страница Поиск, карта сайта Написать письмо