Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизКак узнать размер памяти какого-то процесса? Найти похожие ветки
← →
GrayFace © (2004-01-27 15:46) [0]Идея такая: сохранять всю память процесса в файл, а потом загружать. Будет полезно для Diablo2, для выключения компа... Сабж и еще в Artmoney есть понятие "блок памяти". Что с ними делать?
← →
Mystic © (2004-01-27 16:20) [1]Технически сложно реализуемая задача... Без понимания работы с памятью и формата Win PE лучше за нее не браться.
← →
AKul © (2004-01-27 17:13) [2]
> Mystic © (27.01.04 16:20) [1]
Понимае формата PE-файла здесь ничего не даст :)
> GrayFace © (27.01.04 15:46)
Хорошо, Вы узнаете где находится образ exe-файла, образы всех загруженных DLL, сохраните это все на диск; Вы также найдете и сохраните все данные динамически выделенной памяти; Найдете все потоки и сохраните их стеки и их локальные данные (статические и динамические); Остановите все потоки (с этого должно все начинаться) и сохраните их контексты (состояние регистров); Сохраните описатели всех объектов ядра, USER, GDI и так далее...
Но как Вы потом это все будете загружать?
Допустим Вам удалось загрузить сохраненные образы екзешника и библиотек, Вы даже сказали системе, что используете эти библиотеки (без DLL_PROCESS_ATACH и DLL_THREAD_ATACH), Вы также создали все треды, восстановили их стеки, контексты и каким-то образом локальные данные. Вам даже удалось заново создать все объекты ядра, USER, GDI.
Но как Вы заставите систему присвоить всем описателям объектов (тредам, файлам, окнам...) те же значения, что и перед сохранением? Например, Вам удалось открыть файл с сохраненными правами доступа, установить сохраненную позицию, но как сказать системе, что бы при открытии (вызове CreateFile), она вернула описатель файла с номером, как в прошлый раз? - Никак. Описатель файла будет содержать совершенно другое значение (конечно, иногда оно может и совпасть), а вот сохраненный код будет обращаться к операциям с файлом со старым описателем (какой был сохранен в его данных), а при новом создании этот описатель может быть или другим объектом, или вообще не сущестовать.
Такая задача "разрешима" только на уровне ядра :)
← →
Digitman © (2004-01-27 17:18) [3]
> GrayFace © (27.01.04 15:46)
> Как узнать размер памяти какого-то процесса?
что его узнавать-то ? 4 гб всегда он
← →
YuRock © (2004-01-27 17:25) [4]> Digitman © (27.01.04 17:18) [3]
Да, да... так и есть... Особенно удобно это использовать, когда памяти всего 64мб и винт на 500 метров...
← →
AKul © (2004-01-27 17:36) [5]Маленькое утешение: можно сохранять только нижние 2 ГБ. А на 500 метровом винте создать сжатый диск с коэффициентом сжатия 1:64.
← →
Игорь Шевченко © (2004-01-27 17:37) [6]
> Идея такая: сохранять всю память процесса в файл, а потом
> загружать
Hybernate уже изобрели. Причем для всех процессов. И Swap-файл тоже изобрели. Все изобретено до нас, Кулибин отдыхает.
← →
Digitman © (2004-01-27 18:08) [7]
> Игорь Шевченко © (27.01.04 17:37) [6]
действительно) ... все гениальное на поверку простое как лапоть)
← →
GrayFace © (2004-01-28 15:36) [8]>И Swap-файл тоже изобрели
А как им пользоваться?
← →
AKul © (2004-01-28 16:09) [9]
> GrayFace © (28.01.04 15:36) [8]
> А как им пользоваться?
А зачем им пользоваться?
← →
VMcL © (2004-01-28 16:47) [10]>>GrayFace © (28.01.04 15:36) [8]
В коллекцию Rouse_
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.073 c