シャットダウン前のマシンの状態を保存したい(休止状態をサポートしていないマシンの場合)。
基本的に、私はWindowsHibernate機能を模倣しようとしています。マシンの電源を入れ直すと、シャットダウン前とまったく同じように見えます。
このタスクを実行するためにマネージコードを使用することについて何かアイデアはありますか?
現在WindowsXPServicePack2を使用/検討中。
コンピューターで実行されているすべてのアプリケーションの場合、これは純粋なマネージコードを使用して行うことはできません。実際、管理されていないコードであっても、非常に時間がかかります。不可能とは言えませんが、非常に困難で時間がかかる可能性があります。
始めるのに役立つリソースをいくつか紹介します。
Windowsカーネル上のArunKishanhttp
://www.dotnetrocks.com/default.aspx? ShowNum=434
コアダンプ
http://en.wikipedia.org/wiki/Core_dump
setcontext
http://en.wikipedia.org/wiki/Setcontext
「休止状態」の単一プロセスに関するレイモンド・チェン
http://blogs.msdn.com/oldnewthing/archive/2004/04/20/116749.aspx
独自のアプリケーションの場合、最善の策は、復元できるようにしたいすべての状態を一連のシリアル化可能なクラスに分離することです。次に、アプリケーションがアンロードされたとき(または定期的に)、XMLSerializerを使用してこのデータをディスクに保存します。アプリケーションが再度ロードされたら、XMLSerializerを再度使用して、アプリケーションの状態を保持しているクラスを再水和し、この情報を使用してユーザーインターフェイスを以前の状態に戻します。複雑なユーザーインターフェイスがある場合、これは時間のかかる作業になる可能性があります。
プログラムを終了する前に、自分で保存する必要があります。すべてのWindowsの状態をxmlにシリアル化し、ファイルに保存できます。アプリケーションが再開したときに設定を再ロードできます。
たぶん、Vista ApplicationRecoveryAPIが役に立ちます。ただし、Vistaが必要です。