Форум: "WinAPI";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизАдресное пространство проги Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c