гибернация одного процесса в Windows - PullRequest
10 голосов
/ 24 апреля 2009

Существует ли какая-либо библиотека или программное обеспечение или какой-либо способ сохранения состояния отдельного процесса в Windows в файл, а затем восстановления запущенного процесса в рабочее состояние, когда вся память уже загружена позднее?

Я знаю, что открытые дескрипторы придется заново открывать, запускать потоки и т. Д., Но можно ли хотя бы восстановить кучу и стек одного потока?

Я видел этот вопрос , но все ответы на linux, и большинство из них говорят, что это не может быть сделано.

Я знаю, что могу сделать все свои структуры данных сериализуемыми и сделать это сам, но я хотел бы знать, возможно ли это без этого.

Ответы [ 2 ]

6 голосов
/ 25 апреля 2009

Рэймонд Чен (который может даже надрать задницу Джону Скиту, когда дело доходит до неясного знания Windows) говорит: это невозможно .

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

Наиболее практичным способом решения этой проблемы является создание виртуальной машины под управлением другого экземпляра Windows и запуск вашего процесса внутри нее:

  • Вы можете сделать гостевую ОС максимально облегченной, используя nLite .
  • Затем можно использовать VMWare VIX API для программного приостановления / возобновления работы виртуальной машины.
  • Это, конечно, приостанавливает гостевую ОС и ваш процесс с ней, решая проблему состояния ОС.
1 голос
/ 10 сентября 2009

>> • Вы можете сделать гостевую ОС максимально облегченной, используя nLite.

Добавить к вышеприведенному утверждению. Официальная облегченная версия Windows XP - «XP Embedded» или « Windows Embedded Standard ». Это версия XP с большим количеством компонентов, которая позволяет уменьшить размер XP до 40 МБ.

«Облегченной» версией Windows 7 является Windows Embedded Standard 2011, которая в настоящее время находится в бета-версии и доступна для загрузки (connect.microsoft.com/windowsembedded)

Конечно, это не бесплатная программа в отличие от NLite.

Спасибо

Srikanth

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...