virtualbox vm から BSOD テキストをどのように取得しますか??
BSOD はテキストであるため、VM のメモリ空間のどこかに、おそらく適切に定義された場所に保存する必要があります。
再起動ではなくブルー スクリーンで停止するように構成された複数の VM があり、定期的にスクリーン ショットを撮るためのコードが用意されています。
この時点で、私の計画は 2 つの画像を区別することです。違いがなく (つまり、画面に変化がなく)、4 隅のピクセルがすべて青 (および右の青) の場合、BSOD の抽出を試みます。テキストで「* STOP:」シーケンスを検索し、BSOD であることを確認します。
私は当初、画像自体からテキストを抽出するための迅速で汚い OCR ソリューションを計画していましたが、メモリからテキストを比較的簡単に抽出できれば、OCR エラーの可能性を排除できます。
マニュアルと API リファレンスを熟読しましたが、すぐに適用できると思われるものは見当たりませんでした。
Virtual Box ホストからゲスト メモリにアクセスして、BSOD テキストをメモリから直接取得することはできますか?
アップデート
明確にするために、現時点で4つの異なるオプションを検討しました
1) Windows デバッグ プロトコルをリバース エンジニアリングし、VM のシリアル ポートでリッスンするための少なくとも基本的なデバッガーを構築する
- シリアル プロトコルのリバース エンジニアリングが必要です。これにはかなりの困難が伴うと思われます
2) Virtualbox で保存された状態ファイルをリバース エンジニアリングし、VM を BSOD に保存した後、そのファイルに保存されていると思われるテキストを VESA メモリ領域から抽出します。
- ソース コード自体以外に、このファイル形式に関するドキュメントを見つけることができませんでした。
3) API を使用して取得した出力画像に対して OCR を実行する
- これが最善の方法かもしれません。私の経験外で、ある種の ocr ソリューションを構築またはセットアップしてトレーニングする必要があります。比較的簡単に実行でき、一定幅のフォント/クリーンな画像、2 色のみの処理
4)API呼び出しを使用するか、何らかの方法でアクセス/公開する拡張機能を作成して、ゲストメモリに直接アクセスします
- Warren が指摘したように、メモリにアクセスするための API はないようです。何らかの方法で vm のメモリを公開する拡張機能を作成できる可能性がありますが、Virtualbox の内部構造を理解する必要があります。
これは Solaris ホストで実行されており、起動する場合としない場合がある Windows vm が 1 つしかない場合があります。この VM は、Windows の比較的最近のバージョン (XP、2003、2003 R2、2008、Vista、2008 R2) である可能性があります。任意の数の Linux ベースの VM を生成できますが、ライセンスの問題により追加の Windows VM を生成することはできません。この時点までの私の考えは、ゲストのメモリから直接取得するのが実装するのが最も簡単だろうということでした.