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

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

Конец процесса занимаемого в памяти [D6, D7, Win95/98, WinXP]


-=SS=- ©   (2004-10-18 16:23:00) 

Добрый уважаемые експерты :) !!!
Есть маленькая проблема.
Сщитываем процес Функцией ReadProcessMemory . Базовый адресс понятен и для всё виндовых приложений он одинаковый, а вот где он заканчивается ? Или надо считывать 4гб данных ?
Зараннее благодарен !


VMcL   (2004-10-23 14:48:00) [1]

>> SLV  (23.10.04 10:25) [18]

Иногда лучше жевать...


SLV   (2004-10-23 10:25:00) [2]

смотри PSAPI (GetProcessInformation) или PIMAGENTHEADERS.OptionalHeader.SizeOfImage...


-=SS=-   (2004-10-20 09:50:00) [3]

Ага понятно спасибо !!!!!
Тойсть если VirtualQueryEx<> SizeOf(B)то занимаемая процессом память закончилась ?

Но можешь если захочешь не отвечать попробую разобратся сам, тем более что больше чем основы у меня уже есть.
 
 Еще раз спасибо !!!


VMcL   (2004-10-19 23:08:00) [4]

>> -=SS=- ©  (19.10.04 10:24) [11]

> Почему ???????????????????

Потому что, не знаю как кто, а я не телепат и угадывать, что именно не работает, не умею. К тому же VirtualQueryEx() - это функция.

Кратко алгоритм
В цикле крутишь:
if VirtualQueryEx(GetCurrentProcess, CurAddr, B, SizeOf(B)) <> SizeOf(B) then Break;

Для первого вызова CurAddr := nil;
Для каждого последующего вызова Inc(PAnsiChar(CurAddr), B.RegionSize);


-=SS=-   (2004-10-19 11:11:00) [5]

А .. блин на Имя не посмотрел. Извени


Игорь Шевченко   (2004-10-19 11:03:00) [6]


> И ты сразу бы сказал что ты выложил её на


?????


-=SS=-   (2004-10-19 10:56:00) [7]

Спасибо за ссылочку. Буду разбиратся

PS: И ты сразу бы сказал что ты выложил её на http://anatolix.naumen.ru/win32books.htm


Игорь Шевченко   (2004-10-19 10:38:00) [8]

-=SS=- ©   (19.10.04 10:24) [11]

Найди книгу Джеффри Рихтера "Создание эффективных Win32-приложений", у него есть пример работы с этой функцией (с картинками).


-=SS=-   (2004-10-19 10:24:00) [9]

Почему ???????????????????
Я просто спрашиваю совета !!!
Вроде всё правильно но значеня возврашает одни и теже не зависимо от екжешника


VMcL   (2004-10-19 10:15:00) [10]

>> -=SS=- ©  (18.10.04 18:09) [9]

> Что я не так делаю ?

Не уважаешь своих собеседников.


-=SS=-   (2004-10-18 18:09:00) [11]

Var
 B:_MEMORY_BASIC_INFORMATION;
begin
  VirtualQueryEx(GetCurrentProcess,Ptr($400000),B,Sizeof(B))

Что я не так делаю ?


Игорь Шевченко   (2004-10-18 17:59:00) [12]

-=SS=- ©   (18.10.04 17:51) [7]


>   не знаю. Как получить размер екжешника в памяти ?


Для запакованного - мучайся сам или смотри, как это делают распаковщики. Или читай про VirtualQueryEx


-=SS=-   (2004-10-18 17:51:00) [13]

А если Екжешник запакованый ?
> знаешь размер
   не знаю. Как получить размер екжешника в памяти ?


Игорь Шевченко   (2004-10-18 17:25:00) [14]

-=SS=- ©   (18.10.04 17:23) [5]

Знаешь базовый адрес, знаешь размер - трудно подсчитать конечный адрес ? Можешь брать размер EXEшника, вряд ли сильно ошибешься, раз уж с VirtualQuery(Ex) не дружишь.


-=SS=-   (2004-10-18 17:23:00) [15]

> Кто "он" ? Образ приложения, образ DLL'ей, загруженных этим
> приложением ?
Екжешник.
Надо коечто найти и прочитать в памяти этого екжешника


Игорь Шевченко   (2004-10-18 17:09:00) [16]


> Базовый адресс понятен и для всё виндовых приложений он
> одинаковый


Не для всех


> а вот где он заканчивается ?


Кто "он" ? Образ приложения, образ DLL'ей, загруженных этим приложением ?


-=SS=-   (2004-10-18 17:01:00) [17]

Удалено модератором
Примечание: Дубль


-=SS=-   (2004-10-18 17:01:00) [18]

Спасибо за ответ VMcL ©   (18.10.04 16:46) [1] Но у меня почему - то не работает


VMcL   (2004-10-18 16:46:00) [19]

VirtualQueryEx()


Наверх

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