Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2008, 11:33   #1
kalexi
Пользователь
 
Регистрация: 05.04.2007
Сообщений: 12
Вопрос Как узнать с какого по какой адрес занимает процесс в системе.

Вобщем мне необходимо просмотреть все адреса памяти какого-либо процесса (ReadProcessMemory).
Т.е. я буду делать цикл. Но мне надо узнать сколько места занимает процесс.
Слышал, что можно воспользоваться ф-цией VirtualQuery.
Может мне кто привести пример как ей пользоваться или иные варианты которые могут мне помочь в данном вопросе.

Заранее спасибо!
kalexi вне форума Ответить с цитированием
Старый 29.03.2008, 12:11   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

А гугл здох?
http://www.google.ru/search?q=Virtua...utf-8&oe=utf-8
VirtualQuery Function (Windows)
http://msdn2.microsoft.com/en-us/lib...02(VS.85).aspx
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 30.03.2008, 15:48   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от kalexi Посмотреть сообщение
Вобщем мне необходимо просмотреть все адреса памяти какого-либо процесса (ReadProcessMemory).
Т.е. я буду делать цикл. Но мне надо узнать сколько места занимает процесс.
Слышал, что можно воспользоваться ф-цией VirtualQuery.
Может мне кто привести пример как ей пользоваться или иные варианты которые могут мне помочь в данном вопросе.
ответ собственно по сабжу: каждый процесс, вернее его память начинается с адреса 0 и кончается адресом 0хFFFFFFFF.
объясняю:
каждый процесс имеет 4 ГБ собственного адресного пространства! напрямую процесс не может обратиться к памяти чужого процесса, для этого надо использовать функции Virtual***Ex() и Read/WriteProcessMemory. Если же быть более точным, то каждый процесс ничанается с адреса 0х10000 и кончается адресом 0х7FFFFFFF, так как первые 64 КБ не используются, а старшие 2 ГБ это память ядра системы, она одна для всех процессов.
А функция VirtualQuery(Ex) нужна для того чтобы узнать "статус" заданной области памяти.

Последний раз редактировалось rpy3uH; 30.03.2008 в 15:52.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать с какого компьютера заходили на определенный сайт? Lidi Помощь студентам 3 20.08.2008 15:56
узнать какие диски есь в системе AIst Общие вопросы Delphi 4 08.08.2008 18:42
как узнать с какого устройства идет ввод данных keg Win Api 5 20.07.2007 10:50
Как узнать IP адрес? AidarBik Работа с сетью в Delphi 2 11.07.2007 12:37
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39