Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1079590631
Tornado
2004-03-18 09:17
2004.04.04
Распечатка Memo


1-1079538178
neteditor_2000
2004-03-17 18:42
2004.04.04
TListBox.AddItem и его параметры


14-1078163302
Pa5ha
2004-03-01 20:48
2004.04.04
TEMP


7-1074545301
terra
2004-01-19 23:48
2004.04.04
USB


9-1064494630
Ilyasim
2003-09-25 16:57
2004.04.04
DXF в массиве





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский