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

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

Сохранить процесс [D7, WinXP]


ATarget ©   (2005-05-19 17:51:00) 

Возможно ли поставить процесс на паузу и сохранить в фаил (как спящий режим в винде). Если да намекните пожайлуста как.


ATarget   (2005-05-20 16:44:00) [1]


> ну мы бы тоже хотели, чтобы вопросы задавали люди поумнее,
> но что есть - то есть...



> Игорь, а как бы это автору втолковать ?)..


Да ладно. Всё понятно - я просто тормоз и т.д., но ведь все на ошибках учатся.
 

> ... про Kernelmode автор и слыхом не слыхивал, но даже если
> так, то при любом намеке далее последует "дайте код !")


А код я нигде и никогда не выпрашиваю, если есть и не жалко то врятли приходится просить, а если задача сложная и исходника нет то никто, я так думаю, морочиться не будет!!! Да ещё про Kernelmode я и вправду и слыхом не слыхивал. Только не надо теперь с меня издеватся. ;(


Digitman   (2005-05-20 16:01:00) [2]


> Игорь Шевченко ©   (20.05.05 15:55) [16]


Игорь, а как бы это автору втолковать ?)..


Игорь Шевченко   (2005-05-20 15:55:00) [3]

Digitman ©   (20.05.05 15:36) [15]


> получить нахалявку недок.точки входа в недок.алгоритм этого
> режима


Это же невозможно. Одна точка входа есть - SetSystemPowerState, но не больше :))


Digitman   (2005-05-20 15:36:00) [4]


> она все целиком сохраняет, а не по отдельным процессам


так точно.
и задача автора - получить нахалявку недок.точки входа в недок.алгоритм этого режима))... причем - в UserMode) ... про Kernelmode автор и слыхом не слыхивал, но даже если так, то при любом намеке далее последует "дайте код !")


Игорь Шевченко   (2005-05-20 15:22:00) [5]

Эта...hibernate - она все целиком сохраняет, а не по отдельным процессам. Поэтому у нее не стоит задачи что-либо перехватить или выделить, она сохраняет текущее содержимое ОЗУ и текущее состояние аппаратных средств, предварительно усыпив и их. А своп-файл и так готовый на диске.


Piter   (2005-05-20 15:20:00) [6]

alpet ©   (20.05.05 14:16) [11]
сохранении процесса, они запоминаются с максимально возможной информацией о состоянии каждого обьекта


как ты можешь узнать информацию об объекте ядра, если

работа на уровне ядра не нужна для решения этой задачи


Eraser   (2005-05-20 14:19:00) [7]

alpet ©   (20.05.05 14:16) [11]

Перехватывать что-то заведомо нельзя. Hebirnate ведь ничего не перехватывает. имхо надо сохранять участок памяти с таблицами дескрипторов и соответственно таблицами самих объектов ядра.


alpet   (2005-05-20 14:16:00) [8]

У меня кода - нет :). Я даже плохо представляю как работает сохранение процесса, есть только предположение - перехватываются функции работающие с большинством обьектов ядра (файлы, потоки, еtc). При сохранении процесса, они запоминаются с максимально возможной информацией о состоянии каждого обьекта (для ее сбора ясное дело нужно либо ядро все-таки расковырять, либо перехватить половину функций API которые это состояние изменяют). При восстановлении - если процесс был перед этим завершен, программе восстановителю приходится играть роль прослойки для сохраненного процесса, повсюду заменяя ранее сохраненные описатели (хэндлы) созданными заново и подставляя их уже реальным функциям API.


Eraser   (2005-05-20 14:07:00) [9]

alpet ©   (20.05.05 13:55) [8]

Ещё больше продвинулся автор(ы) программы VMWare, где можно тоже потсавить на паузу и сохранить полностью текущее состояние системы.

Но имхо это ОЧЕНЬ не просто. На уровне дескрипторов по-моему невозможно.


Digitman   (2005-05-20 14:01:00) [10]


> alpet ©   (20.05.05 13:55) [8]


рискуешь получить в ответ "не умничай, код давай")


alpet   (2005-05-20 13:55:00) [11]

Если попростому - сохранение процесса упирается в сложность сохранения множества объектов ядра и их состояний на момент сохранения, а затем восстановление всей картины в целом. Очень неплохо продвинулся к решению этого вопроса автор программы DetectiveStory, в скором времени его программа будет практически безупречно осуществлять сохранение игр в проделах времени работы процесса. Что бы решить всю задачу для получения идеального результата, придется сделать очень много перехватов API процесса, причем необходимо учесть и работу с объектами (интерфейсами) DirectX. Как это не странно, драйвер и вообще работа на уровне ядра не нужна для решения этой задачи...


Piter   (2005-05-20 12:51:00) [12]

ATarget ©   (20.05.05 10:42) [4]
вот только хотел чтоб ответил ктонибуть поумней


ну мы бы тоже хотели, чтобы вопросы задавали люди поумнее, но что есть - то есть...


Digitman   (2005-05-20 11:18:00) [13]


> Но всё таки это возможно


в ХР конечно возможно.
при завершении работы системы просто выбери режим hibernate.


ATarget   (2005-05-20 11:00:00) [14]


> Лучше сохраняй результат работы, а не саму работу )

Не ты не понял я хочу сохранять не свой процесс а к примеру Rangers.exe с защитой StarForce.
О, если прогресс процесса сохранить очень тяжело то может быть можно скопировать всю оперативу и используемые участки фаила подкачки а потом какимто макаром их поменить?


ATarget   (2005-05-20 10:42:00) [15]

Ну вобщем ладно, я знал, что мне так ответят, вот только хотел чтоб ответил ктонибуть поумней. Спасибо вобщем.

P.S. Но всё таки это возможно!!! 8) ...


Eraser   (2005-05-19 20:17:00) [16]

ATarget ©

Лучше сохраняй результат работы, а не саму работу )


Piter   (2005-05-19 17:59:00) [17]

ATarget ©   (19.05.05 17:51)
Возможно ли поставить процесс на паузу


на паузу можно поставить то, что играется, выполняется. Процесс никем не выполняется.
Потоки можно поставить на паузу, если есть права.

и сохранить в фаил (как спящий режим в винде).

смотря что имеется в виду... Можно сохранить бОльшую часть данных из адресного пространства процесса, но все равно некоторые области тебе будут доступны только из режима ядра.

В общем, понятно что ты хочешь. Но я тебя уверяю - задача ОЧЕНЬ ТРУДОЕМКАЯ и вряд ли тобой выполнимая...


Digitman   (2005-05-19 17:57:00) [18]


> как спящий режим в винде


то что тебе нужно решается гораздо проще и не требует никакого "поставить процесс на паузу и сохранить в фаил"


Наверх

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