OSイメージの開発には、カーネルデバッガを利用する方法のほかに、本連載の第2回で紹介したリモートツールを使ったターゲットデバイスの解析も有効な手法の1つです。第1回で解説したようにWindows CE 6ではカーネルのメモリ管理方法が変更され、32個以上のプロセス起動が可能となっています。そこでリモートツールを使って、実際に32個以上のプロセスを起動できること確認してみたいと思います。
まず、32個以上のプロセスを起動するためのアプリケーションをOSイメージに追加します。アプリケーションのひな型としておなじみの「Hello Worldアプリケーション」を100個起動するアプリケーションを作成します。ワークスペースにアプリケーションのサブプロジェクトを追加するため、[Solution Explorer]の[ワークスペース名](ここでは[MyOSImage])を右クリックし、[Add New Subproject]を選択します。
すると、[Windows CE Subproject Wizard]が表示されます。Platform Builder 5.0上でアプリケーションを作成するサブプロジェクトの生成時に表示されるダイアログと同じものです。まず「Available templates」で[WCE Application]を選択し、「Subproject name」にサブプロジェクト名、「Location」にサブプロジェクト格納パスを入力します。設定が終わったら[Next]ボタンで次に進みます。
「Auto-generated subproject files」画面では、[A simple Windows CE application]ラジオボタンを選択して[Finish]ボタンを押します。
以上で[Solution Explorer]の[Subprojects]にサブプロジェクト[TESTAPP]が追加され、C++プロジェクトが生成されます。
TESTAPP.cppには、アプリケーションエントリポイントのWinMain関数がすでに実装されています。このWinMain関数に、100個のプロセスを実行する処理(下記ソースコード)を追加します。
PROCESS_INFORMATION procInfo; for(int i = 0; i < 100; i++){ CreateProcess(TEXT("TESTAPP2.exe"), NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, NULL, &procInfo); }
これにより、TESTAPPアプリケーションを実行するとTESTAPP2アプリケーションが100回起動されます。
次にTESTAPP2アプリケーションを作成します。TESTAPPと同じ手順でサブプロジェクトを追加します。なお、「Auto-generated subproject files」画面では[A typical “Hello World” application]を選択します。
以上で、アプリケーションの追加と実装は完了です。Visual Studio 2005の[Build]−[Build Solution]メニューでOSイメージを再構築します。サブプロジェクト内のBIBファイルに追加したアプリケーションをNK.BINに含めるように設定しているので、ワークスペースのサブプロジェクトとして追加したアプリケーションも自動的にOSイメージに組み込まれます。OSイメージのビルドが完了したら、[Target]−[Attach Device]メニューでOSイメージを起動します。
OSが起動したら、まずはTESTAPP.exeとTESTAPP2.exeがOSイメージに含まれていることを確認してみましょう。デバイス上でエクスプローラを起動しても確認できますが、ここでは「Remote File Viewer」を利用して確認してみます。Visual Studio 2005で[Target]−[Remote Tools]−[File Viewer]を選択します。
ターゲットデバイスへ接続する設定は、[Connection]−[Configure Windows CE Platform Manager]メニューで行います。接続するデバイスを選択して[Properties]ボタンを押すと、[Device Properties]ダイアログが表示されます。「Transport」「Startup Server」コンボボックスで接続方式を選択します。ここではエミュレータに接続するため、[Transport]は[KITL Transport for Windows CE]、[Startup Server]は[KITL Boostrap Server]を選択しています。
設定が終わったら、[Connection]−[Add Connection]メニューでターゲットデバイスに接続します。Windowsフォルダの配下を参照すると、TESTAPP.exeとTESTAPP2.exeが追加されていることが分かります。
では、TESTAPP.exeを起動してみましょう。ターゲットデバイスで[スタート]メニューの[Run]を選択し、[Run]ダイアログで「TESTAPP」と入力して[OK]ボタンをクリックします。
これでTESTAPP.exeが起動し、さらにTESTAPP2.exeが100個起動します。[Ctrl]+[Alt]+[Del]キーでタスクマネージャを開き、[Task Manager]ダイアログの[Active Tasks]リストを見ると、TESTAPP2が100個起動していることが分かります。
今度は、起動しているプロセスを「Remote Process Viewer」で確認してみます。Visual Studio 2005で[Target]−[Remote Tools]−[Process Viewer]を選択し、Remote File Viewerと同じ手順でターゲットデバイスに接続します。これで、「TESTAPP2.exe」が100個起動していることが確認できます。
このように、リモートツールを利用することで開発マシンからターゲットデバイスの状態を参照できます。File ViewerやProcess Viewer以外にも、ヒープ情報やパフォーマンス測定、スレッド遷移などさまざまな情報を参照可能です。
Copyright © ITmedia, Inc. All Rights Reserved.