Спящий режим в Windows

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Конечно, это не бесплатное ПО, отличное от NLite.

Спасибо,

Srikanth