Форум: "WinAPI";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизСохранить процесс Найти похожие ветки
← →
ATarget © (2005-05-19 17:51) [0]Возможно ли поставить процесс на паузу и сохранить в фаил (как спящий режим в винде). Если да намекните пожайлуста как.
← →
Digitman © (2005-05-19 17:57) [1]
> как спящий режим в винде
то что тебе нужно решается гораздо проще и не требует никакого "поставить процесс на паузу и сохранить в фаил"
← →
Piter © (2005-05-19 17:59) [2]ATarget © (19.05.05 17:51)
Возможно ли поставить процесс на паузу
на паузу можно поставить то, что играется, выполняется. Процесс никем не выполняется.
Потоки можно поставить на паузу, если есть права.
и сохранить в фаил (как спящий режим в винде).
смотря что имеется в виду... Можно сохранить бОльшую часть данных из адресного пространства процесса, но все равно некоторые области тебе будут доступны только из режима ядра.
В общем, понятно что ты хочешь. Но я тебя уверяю - задача ОЧЕНЬ ТРУДОЕМКАЯ и вряд ли тобой выполнимая...
← →
Eraser © (2005-05-19 20:17) [3]ATarget ©
Лучше сохраняй результат работы, а не саму работу )
← →
ATarget © (2005-05-20 10:42) [4]Ну вобщем ладно, я знал, что мне так ответят, вот только хотел чтоб ответил ктонибуть поумней. Спасибо вобщем.
P.S. Но всё таки это возможно!!! 8) ...
← →
ATarget © (2005-05-20 11:00) [5]
> Лучше сохраняй результат работы, а не саму работу )
Не ты не понял я хочу сохранять не свой процесс а к примеру Rangers.exe с защитой StarForce.
О, если прогресс процесса сохранить очень тяжело то может быть можно скопировать всю оперативу и используемые участки фаила подкачки а потом какимто макаром их поменить?
← →
Digitman © (2005-05-20 11:18) [6]
> Но всё таки это возможно
в ХР конечно возможно.
при завершении работы системы просто выбери режим hibernate.
← →
Piter © (2005-05-20 12:51) [7]ATarget © (20.05.05 10:42) [4]
вот только хотел чтоб ответил ктонибуть поумней
ну мы бы тоже хотели, чтобы вопросы задавали люди поумнее, но что есть - то есть...
← →
alpet © (2005-05-20 13:55) [8]Если попростому - сохранение процесса упирается в сложность сохранения множества объектов ядра и их состояний на момент сохранения, а затем восстановление всей картины в целом. Очень неплохо продвинулся к решению этого вопроса автор программы DetectiveStory, в скором времени его программа будет практически безупречно осуществлять сохранение игр в проделах времени работы процесса. Что бы решить всю задачу для получения идеального результата, придется сделать очень много перехватов API процесса, причем необходимо учесть и работу с объектами (интерфейсами) DirectX. Как это не странно, драйвер и вообще работа на уровне ядра не нужна для решения этой задачи...
← →
Digitman © (2005-05-20 14:01) [9]
> alpet © (20.05.05 13:55) [8]
рискуешь получить в ответ "не умничай, код давай")
← →
Eraser © (2005-05-20 14:07) [10]alpet © (20.05.05 13:55) [8]
Ещё больше продвинулся автор(ы) программы VMWare, где можно тоже потсавить на паузу и сохранить полностью текущее состояние системы.
Но имхо это ОЧЕНЬ не просто. На уровне дескрипторов по-моему невозможно.
← →
alpet © (2005-05-20 14:16) [11]У меня кода - нет :). Я даже плохо представляю как работает сохранение процесса, есть только предположение - перехватываются функции работающие с большинством обьектов ядра (файлы, потоки, еtc). При сохранении процесса, они запоминаются с максимально возможной информацией о состоянии каждого обьекта (для ее сбора ясное дело нужно либо ядро все-таки расковырять, либо перехватить половину функций API которые это состояние изменяют). При восстановлении - если процесс был перед этим завершен, программе восстановителю приходится играть роль прослойки для сохраненного процесса, повсюду заменяя ранее сохраненные описатели (хэндлы) созданными заново и подставляя их уже реальным функциям API.
← →
Eraser © (2005-05-20 14:19) [12]alpet © (20.05.05 14:16) [11]
Перехватывать что-то заведомо нельзя. Hebirnate ведь ничего не перехватывает. имхо надо сохранять участок памяти с таблицами дескрипторов и соответственно таблицами самих объектов ядра.
← →
Piter © (2005-05-20 15:20) [13]alpet © (20.05.05 14:16) [11]
сохранении процесса, они запоминаются с максимально возможной информацией о состоянии каждого обьекта
как ты можешь узнать информацию об объекте ядра, если
работа на уровне ядра не нужна для решения этой задачи
← →
Игорь Шевченко © (2005-05-20 15:22) [14]Эта...hibernate - она все целиком сохраняет, а не по отдельным процессам. Поэтому у нее не стоит задачи что-либо перехватить или выделить, она сохраняет текущее содержимое ОЗУ и текущее состояние аппаратных средств, предварительно усыпив и их. А своп-файл и так готовый на диске.
← →
Digitman © (2005-05-20 15:36) [15]
> она все целиком сохраняет, а не по отдельным процессам
так точно.
и задача автора - получить нахалявку недок.точки входа в недок.алгоритм этого режима))... причем - в UserMode) ... про Kernelmode автор и слыхом не слыхивал, но даже если так, то при любом намеке далее последует "дайте код !")
← →
Игорь Шевченко © (2005-05-20 15:55) [16]Digitman © (20.05.05 15:36) [15]
> получить нахалявку недок.точки входа в недок.алгоритм этого
> режима
Это же невозможно. Одна точка входа есть - SetSystemPowerState, но не больше :))
← →
Digitman © (2005-05-20 16:01) [17]
> Игорь Шевченко © (20.05.05 15:55) [16]
Игорь, а как бы это автору втолковать ?)..
← →
ATarget © (2005-05-20 16:44) [18]
> ну мы бы тоже хотели, чтобы вопросы задавали люди поумнее,
> но что есть - то есть...
> Игорь, а как бы это автору втолковать ?)..
Да ладно. Всё понятно - я просто тормоз и т.д., но ведь все на ошибках учатся.
> ... про Kernelmode автор и слыхом не слыхивал, но даже если
> так, то при любом намеке далее последует "дайте код !")
А код я нигде и никогда не выпрашиваю, если есть и не жалко то врятли приходится просить, а если задача сложная и исходника нет то никто, я так думаю, морочиться не будет!!! Да ещё про Kernelmode я и вправду и слыхом не слыхивал. Только не надо теперь с меня издеватся. ;(
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.038 c