Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.09;
Скачать: CL | DM;

Вниз

Адресное пространство проги   Найти похожие ветки 

 
Alex_win   (2002-07-17 09:26) [0]

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


 
Digitman ©   (2002-07-17 10:14) [1]

А это зачем ?


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

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

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


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

VirtualQuery(Ex) ()


 
Edmond ©   (2002-07-17 12:28) [4]

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

HMODULE GetModuleHandle( PCTSTR pszModule);

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

Edmond


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

to Edmond © (17.07.02 12:28)

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


 
Digitman ©   (2002-07-17 14:23) [6]

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

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



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

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

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


 
Digitman ©   (2002-07-17 15:11) [8]

>watcher

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

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


 
Edmond ©   (2002-07-18 13:31) [9]

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


 
Digitman ©   (2002-07-18 13:52) [10]

>Edmond

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


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

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

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


 
Digitman ©   (2002-07-18 14:07) [12]

>Edmond

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


 
Edmond ©   (2002-07-18 14:12) [13]

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


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

>Edmond

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

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-27069
Skif
2002-08-28 09:07
2002.09.09
Удаление файлов


1-26975
IL-2
2002-08-29 15:08
2002.09.09
ShellList


3-26866
Dimedrol
2002-08-19 13:33
2002.09.09
SYSDBA password


1-27079
Explorer
2002-08-28 14:33
2002.09.09
MDI-Childs


1-27038
Serd_hhc
2002-08-27 12:39
2002.09.09
CharToByte or not CharToByte