Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/30: Рейтинг темы: голосов - 30, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 8

Виртуальная память процесса, функции WinAPI

21.04.2013, 17:33. Показов 6109. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Нужно написать программу, которая выводит информацию о виртуальной памяти процесса (задача сформулирована дословно).
Я никак не могу найти функции, по которым это можно сделать. Technet тоже особо не помогает (или я проглядел их).
Кто-нибудь может их подсказать? Желательно с описанием или ссылочками на них.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2013, 17:33
Ответы с готовыми решениями:

Оперативная память и WinAPI (поиск строки в памяти процесса)
Здравстуйте. Работаю с оперативной памятью и WinApi. Пытаюсь найти строчку в памяти запущенного процесса. Естественно не получается....

Виртуальная память процесса
Доброго времени суток. Задача следущая: есть необходимость заглянуть в виртуальную память процесса, то есть просмотреть все адреса в...

Виртуальная память
Всем привет. Такой вопрос: Выделил память через VirtualAlloc. В качестве значения для параметра lpvAddress указал nil. Как узнать адрес...

8
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
21.04.2013, 19:50
Джеффри РИХТЕР Создание эффективных WIN32-приложений с учётом специфики 64-разрядной версии Windows
Часть III: Управление памятью
Глава 14 - Исследование виртуальной памяти Программа-пример VMMap
дней долгих тебе дядюшка рихтер )))
1
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 8
21.04.2013, 20:57  [ТС]
Как же я забыл про дядюшку Джеффри! Огромное спасибо!)
0
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 8
09.05.2013, 16:44  [ТС]
Всплыла другая проблема: я нашел у Рихтера такую замечательную функцию, как VirtualQueryEx. Она принимает такой параметр, как pvAddress - адрес ВП процесса. Возникает вопрос: как этот параметр можно получить? Покурил исходники VMMap, там передается NULL, но с таким параметром вся инфа о ВП обращается в нули и прога отказывается работать. Что делать?(
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.05.2013, 17:38
Сначала определяется размер страницы памяти, делается это с помощью GetNativeSystemInfo.
Затем нужно узнать, сколько виртуальной памяти доступно процессам в режиме пользователя.
Для этого вызывается функция GlobalMemoryStatusEx.
Ну а дальше цикл с проходом по адресу начала каждой страницы памяти и вызовом VirtualQuery(Ex).
Только для 64-разрядных процессов поиск может быть о-очень долгим...
1
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 8
10.05.2013, 16:27  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Ну а дальше цикл с проходом по адресу начала каждой страницы памяти и вызовом VirtualQuery(Ex).
А для конкретного процесса по его хэндлу/PID/имени я не могу получить адрес 1 блока, где находится его ВП? Только перебором?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
10.05.2013, 17:27
Цитата Сообщение от KPK10 Посмотреть сообщение
А для конкретного процесса по его хэндлу/PID/имени я не могу получить адрес 1 блока, где находится его ВП?
Вопрос немного непонятный. Адресное пространство процесса - это и есть виртуальная память.
Она поделена на страницы размером в 4 Кб (бывают и другие размеры). Вы можете запросить
данные по любой странице, зная ее адрес и при условии, что у вас достаточно на это прав.
1
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 8
11.05.2013, 15:17  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Вопрос немного непонятный. Адресное пространство процесса - это и есть виртуальная память.
Она поделена на страницы размером в 4 Кб (бывают и другие размеры). Вы можете запросить
данные по любой странице, зная ее адрес и при условии, что у вас достаточно на это прав.
Права я получаю посредством EnableDebugPrivilege(true). Вот в адресе вся проблема и заключается. В VirtualQueryEx, как я понял, его надо передать в параметре pvAddress. А как мне получить адрес первой страницы процесса, чтобы получить информацию? У Рихтера я это не нашел, может, проглядел...
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.05.2013, 17:14
Адрес первой страницы адресного пространства - это NULL.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2013, 17:14
Помогаю со студенческими работами здесь

Виртуальная память.
Здравствуйте. Помогите мне, пожалуйста!!! Начинает виснуть комп и появляется сообщение о тм, чо мало виртуальной памяти. А теперь вообще не...

виртуальная память
Во время игры в empire total war комп выдает сообщение, что не хватает виртуальной памяти, хотя раньше все было нормально. Как сделать,...

Виртуальная память
Как лучше сделать виртуальную память в 32 битном режиме? Надо чтобы все таблицы страниц присутствовали? Или добавлять по мере надобности....

Виртуальная память
Привет всем! Недавно наткнулся на одну интересную статью в и-нете:http://windowsfan.ru/skleroz-virtualnoj-pamyati/. Так вот, раскажите...

Kernel space и виртуальная таблица процесса
Приветствую, к примеру имеется dll файл который будет проецироваться в kernel space. Вопрос такой, будет ли этот dll файл иметь доступ к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru