Microsoft Windows CEのモジュール性
David Pellerin、Kevin Chen
Microsoft Corporation
1998年4月
Microsoft(r) Windows(r) CEは、ハンドヘルドPC(H/PC)や一般電子デバイスから、専門の工業用コントローラや組み込み通信デバイスまで、さまざまな組み込みシステムや製品での利用を目的としたオペレーティング システムです。Windows CEオペレーティング システムは、組み込みシステム設計者がMicrosoftの32ビット プログラミング技術とオペレーティング システム技術のフル パワーを利用できるようにすることで、最も要求の高い32ビット組み込みアプリケーションの要求にも応えられることを証明してきました。
組み込みシステム用Windows CEの重要な特徴の1つは、そのモジュール性の高さです。本稿で説明するように、Windows CEは、実際には、特定の組み込みアプリケーションや製品の要求に合わせて選択、構成ができる、オペレーティング システム モジュールとコンポーネントの集合です。組み込みシステム開発者は、Microsoft Windows CE Embedded Toolkit for Visual C++(r)を使用して、個々のハードウェア プラットホームとアプリケーションに合わせてカスタマイズ、最適化されたバージョンのWindows CEを作成できます。
本稿の目的は、Windows CEのモジュールとコンポーネントを選択、組み合わせ、構成して、オペレーティング システムのカスタマイズ バージョンを作成する方法を説明することです。本稿では、以下を説明します。
- Windows CEを構成するモジュールとコンポーネントの概要
- Windows CEのカスタム バージョンを構成して構築する方法
- 一般的なWindows CEの構成例
- Windows CEが組み込みアプリケーションに最適な、柔軟で強力なモジュール型のプラットホームであること
目次
はじめに
Windows CEモジュールとコンポーネント
Windows CEのカスタマイズ
構成例
まとめ
はじめに
1996年に初めて登場したWindows CEオペレーティング システムは、資源が限られている組み込み用途向けに設計されています。こういったアプリケーションは、それこそ何千種類もあります。たとえば、携帯型の通信機器、商用のビルディング自動化システム、製造工程コントローラ、一般家電製品、医療データ測定装置などさまざまです。
通常、このような装置には、実装に必要なハードウェア(RAM、ROM、他のリソース)を減らすことが要求されます。Windows CEは、より小型で、より効率的、強力でカスタマイズ可能な32ビット オペレーティング システムに対するニーズに応えるように設計されています。
組み込みシステムの合理化
組み込みシステムの簡素化は多くの場合、コストという要件に応えるために推進されますが(一般家電製品の場合など)、システムの信頼性、消費電力の制限、物理的なサイズの制約など、ほかの要因によって推進されることもあります。次に示す組み込みシステムの代表的な特徴を考えてみてください。
- 組み込みシステムでは、メモリや他のハードウェア リソースに対する制約が厳しいこともある。
- 組み込みシステムには、グラフィック ユーザー インターフェイスがある場合とない場合がある。
- 組み込みシステムでは、時間の制約が厳しい処理をしなければならないことがある。
- 組み込みシステムは、アプリケーションを1つだけ実行するように設計されることがある。
- 組み込みシステムは、単独のカスタマイズされたプラットホーム上で動作するように設計されることがある。
- 組み込みオペレーティング システムと、それがホストを務めるアプリケーションとの差違が明確でないことがある。
最後の特徴は特に重要です。組み込みシステム用に選ばれたオペレーティング システムは、組み込みアプリケーションの邪魔になってはいけません。多くの場合、アプリケーション ユーザーが、組み込みシステムまたは製品の内部で使われているオペレーティング システムを知る必要がありません(知るべきでないこともあります)。この環境では、(ほかの設計目標を不必要に損ねることなく)ごく基本的な機能にまで縮小でき、限られたリソースにも対応できるオペレーティング システムが最も重要です。
たとえば、ホーム オートメーション システムの設計を考えてみてください。この製品には、室温調節システム(暖房、換気、空調)機能のほか、電灯の制御、遠隔警報システム、インターコム、電話応答システムだけでなく、消費エネルギー監視装置など高度な機能も備えていることも考えられます。これは、充実した(しかし単純な)グラフィカル インターフェイスが要求されるかもしれないけれど、基盤となるオペレーティング システムのどの要素もユーザーに公開する必要がなかったり、キーボードなどのハードウェア機能を利用する必要のない組み込みアプリケーションの例です。この情報機器は、比較的複雑ですが、必要なのは完全なオペレーティング システムの多くの機能のごく一部だけです。
Windows CEは、このような組み込みアプリケーションの要求に応えるために、効率的でカスタマイズ可能、そしてモジュール型であるように設計されています。こうしてできたオペレーティング システムは、個々の機能(通信、グラフィカル ユーザー インターフェイス、専用入力装置のサポートなど)が簡単に選択、構成でき、また特定の機能を丸ごと除外したりでき、用途に応じてカスタマイズされたオペレーティング システムが作成できます。
組み込みアプリケーションのためのWindows CE
Windows CEを構成するモジュールとコンポーネントを説明する前に、より高いレベルから、Windows CEとはどんなものかを理解することが重要です。Windows CEに慣れていないユーザーは、CEが単に既存のオペレーティング システム(Windows NT(r)オペレーティング システムなど)の機能限定版であるという間違って印象を持っているかもしれません。しかし、Windows CEは実際には、メモリ占有量が小さく、高度にカスタマイズが可能な、組み込みアプリケーション向けのモジュール型オペレーティング システムとして、ゼロから開発されたものなのです。Windows CEカーネルは、Microsoftのほかの32ビット オペレーティング システムから特に優秀な機能を多く借用しています。その一方で、代表的なWindows CEベースのアプリケーションでは不要なオペレーティング システム機能を排除して(あるいは置き換え)います。その結果、Windows CEはコンパクトな上にカスタマイズも可能なのです。実際、200 KB未満のROMしか必要としないバージョンのWindows CEカーネルも作成できます。
ほかの32ビットWindowsオペレーティング システムと違って、Windows CEオペレーティング システムのコードはROMに常駐し、そこで実行されます。製品の要求によっては、アプリケーション コードをROMに入れることもできます。たとえば、H/PCに搭載されているPocket Word、Pocket Excel、その他のアプリケーション プログラムはROMで提供されます。
Windows CEでは、ROMに格納されているプログラムはその場で実行されるので、組み込みアプリケーションは、スタックやヒープ ストレージなどのためにRAMをごくわずかに使用するだけで動作します。あるいは、アプリケーションがプログラム用のメモリのほか、一時記憶域としてRAMを使用することもできます。
アプリケーション ソフトウェアのパフォーマンスをさらに高めるために、Windows CEはオンデマンド ページング機能を備えています。オペレーティング システムは、RAMベースのプログラムを実行するときには、プログラムのごく一部を展開してロードするだけでよいのです。ROMベースとRAMベースのプログラムの柔軟性や速度は、Windows CEに基づくデバイスを多種多様なメモリ構成で組み立てられることを意味します。
開発側では、Windows CEをターゲットとするプログラマは、Microsoft Visual C++や Visual Basic(r)、Visual J++(tm)など、さまざまな馴染み深い開発環境が使用できます。Windows CEアプリケーション プログラマ インターフェイス(API)は、ほかの32ビットWindowsプラットホームで使用されているWin32(r) APIと一貫性があるため、簡単に新しいアプリケーションを作成したり、既存のデスクトップ アプリケーションを移植したりできます。Windows CEを特定のタイプのハードウェアに合わせてカスタマイズできるように、Microsoftは、適切なコンポーネントを選択して構成できるようにするほか、Windows CE Embedded Toolkit for Visual C++も提供します。このツール セットは、アプリケーション ソフトウェアを含むWindows CEと、コンポーネントをサポートするために必要なWindows CEオペレーティング システム コンポーネントを構築し、ターゲット プラットフォームにダウンロードし、デバッグするために必要なものをすべて提供します。
Windows CEのモジュールとコンポーネント
必要メモリ容量の最小化は主要な設計目標です。そのためWindows CEはいくつかの独立のモジュールで構成されています。必要なモジュールだけを選択することで、オペレーティング システム ソフトウェアのサイズ(「メモリ占有量」)を調整できます。これらのモジュールのいくつかは、さらに細かいコンポーネントに分けられます。最小限のモジュールとコンポーネントを選択することで、最終製品に必要なハードウェア資源(特にROMとRAM)を最小限にすることができます。
複数のオプション コンポーネントを含むWindows CEモジュールは、コンポーネント化可能なモジュールと呼ばれます。コンポーネント化可能なモジュールの例としては、Coredll、Gwes、Filesys、Ole32などがあります。これらのモジュールは、オペレーティング システムの主要な機能に対して完全、あるいは部分的なサポートを提供し、特定の組み込みアプリケーションの要求に応えるために調整できます。
オペレーティング システムのカーネル コンポーネント
Windows CEカーネル(Coredllモジュールに代表されます)は、すべてのプラットホームで必須の基本オペレーティング システム機能を提供します。カーネルは、メモリ管理、プロセス管理、そしていくつかの必須のファイル管理機能の責任を負います。カーネルは、仮想メモリ、スケジューリング、マルチタスク処理、マルチスレッド処理、例外処理を管理します。
Coredllモジュールの大半のコンポーネントは、どの構成のWindows CEでも必要です。しかし、テレフォニー、マルチメディア、GDIグラフィックスなど、ほかのオペレーティング システム機能(や対応するモジュール)を含める場合に必要な、オプションのカーネル コンポーネントもあります。
ファイル システム コンポーネント
Filesysモジュールは、Windows CEのオブジェクト ストアAPI関数をサポートします。これらのAPI関数は、ROMベースのファイル システム、RAMベースのファイル システム、構造化されたストレージ システム(Windows CEデータベース)、そしてとシステム レジストリをサポートします。ファイル システムは、複数のインストール可能ファイル システムもサポートします。PCカードなどの外部媒体上に格納されたファイルをサポートするために、FAT File Systemの実装も提供されます。これらのファイル システム コンポーネントは、オペレーティング システムのビルド工程で、選択したり除外したりすることで、必要なファイル システム機能だけを含めるようにできます。以下にファイル システム コンポーネントの代表的な組合せをいくつか挙げます。
- ROMのみのファイル システム
- ROMとRAMのファイル システム
- ROM、RAM、データベース、レジストリ、パスワード
- RAMとROMファイル システムとFATファイル システム
Windows CEは、カスタム構成をして、これらのファイル システムのどんな組合せでもサポートできるようになっています。
Graphic, Windowing, and Eventコンポーネント
Windows用にプログラムを組んだ経験があるなら、おそらくWind 32 APIを通じて公開されているデスクトップWindowsプラットフォームのWin32 UserとGDI(Graphics Device Interface)サブシステムはよく知っているでしょう。Windows CEは、UserとGDIサブシステムを統合して、Graphics, Windowing, and Events Subsystem(Gwes)と呼ばれるコンポーネント化できるモジュールとして提供します。Gwesのイベント マネージャとウィンドウ マネージャはWin32のUserサブシステムと同等のものです。一方Win32 GDIサブシステムは、Windows CEベースのデバイスに適した、サイズの小さいマルチプラットフォームGDI(MGDI)で置き換えられます。
Gwesモジュールは、Windows CEのユーザー インターフェイスとウィンドウ処理機能をつかさどります。Gwesは、システムのウィンドウ、ダイアログ、コントロール操作機能を実装します。また、Gwesはグラフィックスとテキストをグラフィックス表示装置上に表示したり、高度なグラフィックス処理を実行したりします。アプリケーション ソフトウェアおよびWindows CE自身は、メニュー、スクロール バー、アイコンなどのユーザー インターフェイス項目を表示するために、GwesのMGDI機能を広範囲にわたって使用します。Gwesコンポーネントは、以下の一般的な領域に編成することができます。
- 基本GWESコンポーネント(必須)
- メッセージ キュー コンポーネント(必須)
- GDIコンポーネント(任意)
- ウィンドウ管理コンポーネント(任意)
- ダイアログ(任意)
- コントロール(任意)
- フォント サポート コンポーネント(任意)
- ユーザー入力コンポーネント(任意)
- パワー マネージメント コンポーネント(任意)
その他のコンポーネントとモジュール
コンポーネント化できる、主要なモジュールFilesysとGwesに加えて、ほかのオペレーティング システム モジュールも使用できます。次のようなカテゴリのモジュールやコンポーネントがあります。
- 通信モジュール(TAPI、IRDA、RAS、TCP/IP、その他のネットワーク機能をサポート)
- PCMCIA(PCカード)サポート モジュール
- RSAデータ暗号化モジュール(通信サポート用)
- デバイス マネージャーとインストール可能デバイス ドライバ
- マルチメディア(サウンド)サポート モジュール
- OLE/COM(OLEオートメーションを含む)サポート モジュール
- カスタムのアドオン シェルをサポートするWindows CEデスクトップとサービス
Windows CEで提供される各モジュールやコンポーネントは、アプリケーション開発者が使用できる、互いに関連のあるAPI関数のグループをサポートします。定義済みのモジュールとコンポーネント、および対応するAPIの一覧がWindows CE Embedded Toolkit for Visual C++で提供されるドキュメントにあります。
Windows CEを使ったデバイスのサポート
Windows CEがモジュール型であるこのよるもう1つの特徴は、そのデバイス ドライバ アーキテクチャです。Windows CEは、デバイス ドライバの2つの基本的なカテゴリをサポートします。組み込みドライバとインストール可能ドライバです。その名が示すように、組み込みデバイス ドライバは、特定のWindows CEベースのハードウェア プラットホームに組込まれるデバイス向けに考えられています。Windows CEを使用する組み込みシステム設計者は、システムに含まれるあらゆるデバイスを運用するための組み込みドライバを提供する責任があります。たとえば、Windows CEベースのアプリケーションによっては、カスタムのタッチパネル式液晶表示画面を必要とするものもあります。Windows CEオペレーティング システムがタッチ スクリーン デバイスを使用できるようにするために、製品の設計者には、それらの装置用にデバイス ドライバ ソフトウェアを提供する責任があります。完成したシステムでは、これらの組み込みドライバは、カスタマイズされたWindows CEカーネルとともに、ROMに常駐します。
インストール可能なデバイス ドライバは、Windows CEプラットホームに一時的に接続が可能な任意の周辺機器ようのものです。これは、モデム、プリンタ、デジタル カメラ、PCカード(PCMCIAカードとも呼ばれています)、その他の外部装置などを対象とします。Windows CEプラットホームは、ハードウェアを追加する方法がデスクトップ コンピュータと異なります。デスクトップPCでは、コンピュータ ユーザーは筐体を開いて拡張カードを直接データ バスに差し込むことができます。これは通常、この種の拡張カード向けのデバイス ドライバ ソフトウェアが、カーネル モードで動作しなければならないことを意味します。これは、ハードウェアを制御するメモリ領域に直接アクセスできる必要があるからです。これに対し、Windows CEプラットホームでは、エンド ユーザーがデータ バスに直接アクセスすることはできず、新しいハードウェアを同じような形で追加することはできません。Windows CEでは、追加のハードウェアはすべて、シリアル ポート、PCカード スロット、Universal Serial Bus(USB)ポートなど外部コネクタを介してWindows CEプラットホームに接続しなければなりません。これは、Windows CE用の周辺装置を一般のPCのプリンタと同じ状況の中に置きます。デバイス ドライバ ソフトウェアは、どちらのものもユーザー モード プロセスとして動作します。ユーザー モード プロセスはそれらの装置を制御するために、組み込みのハードウェアのサービスを使用します。
Windows CEのデバイス ドライバ アーキテクチャは、ドライバ作成の工程を合理化する一方で、システム リソースに対する要求を減らし、デバイス割り込みの高速な処理を維持するように設計されています。アプリケーションは、組み込みドライバまたはインストール可能なドライバか、あるいはその両方を使用するかどうかに関係なく、Windows CEがリソースに対するデバイスの要求を最小限にすることによるメリットを受けることできます。
Windows CE用のインストール可能デバイス ドライバは、ダイナミック リンク ライブラリ(DLL)です。これらのDLLは、Windows 95やWindows NTオペレーティング システム用のDLLを作成するのと似たような方法で作成できます。
インストール可能デバイスドライバの主な仕事はアプリケーションに周辺装置のサービスを公開することです。ほかのWindowsオペレーティング システムの場合と同じように、これはファイル システムの特殊ファイルとしてデバイスを表現する方法により実現されます。インストール可能デバイス ドライバDLLはすべて、同じエントリ ポイントを公開します。それらのエントリポイントは、OpenFile、ReadFile、DeviceIOControl、その他、標準のWin32ファイルのI/O関数に対応します。さらに、Windows CEは、Windows CEプラットホームの電源が切れている間に周辺装置の状態を保持するための追加のエントリ ポイントがいくつか必要です。
Windows CEをカスタマイズ
アプリケーションとハードウェアの要求内容を満たすようカスタマイズされたバージョンのWindowsを作成するのは、適切なツールさえあれば簡単です。Windows CE Embedded Toolkit for Visual C++には、Windows CEオペレーティング システムを作成し、新しいハードウェアに移植するために必要なすべてが含まれています。リモート デバッグ ツールを使えば、組み込みアプリケーションを簡単にテストしたりデバッグしたりできます。また、サンプル ドライバは、新しいカスタム ハードウェア装置をサポートする工程を単純化します。
Windows CE Embedded Toolkit for Visual C++は、Visual C++ for Windows CEの統合開発環境(IDE)に組込まれ、組み込みソフトウェア開発者向けの次のような機能を追加します。
- Windows CEがサポートする各種プロセッサ ファミリ用のクロス コンパイラ
- Windows CEの各種アプリケーションをすばやく簡単にデバッグするためのWindows CEエミュレータ
- Windows CEオペレーティング システム ビルダ
- ROMイメージ生成ユーティリティ
- ダウンロードとリモート デバッグ ツール
- サンプル コードとチュートリアル ドキュメント
- Windows CEソフトウェア開発キット(SDK)
- Windows CEドライバ開発キット(DDK)
- Win32 for Windows CE APIリファレンス
- Windows CEオペレーティング システムの全モジュールとコンポーネント
Windows CEとEmbedded Toolkitは、多種多様な組み込みプロセッサをサポートします。これらのプロセッサを次に挙げます:Hitachi SH3、SH4;DEC SA-1100、ARM 720 T;NEC VR4102、VR4111、VR4300;IBMとMotorola PPC821、PPC403GC;Philips PR31500;Toshiba TX3912;AMD ElanSC400、Intel i486 DXとPentiumプロセッサのファミリ。これらCPUファミリのほかのメンバも、Windows CEを実行できるかもしれませんが、Microsoftの試験所で認定試験を実施していません。
新しいハードウェアへのWindows CEの移植
ハードウェアを含め、完全にカスタマイズされた製品を作成する場合には、まずハードウェアとアプリケーションの要求を特定し、それらの要求を満たすWindows CEのカスタマイズされたバージョンを作成する必要があります。新しいハードウェア プラットホームと、それをサポートするI/Oデバイスを開発するときは、設計のさまざまなレベルで決定と妥協をすることになります。たとえば、一般的な既成ハードウェアだけを使用するのでない限り、1つまたは複数の周辺機器をサポートするために、カスタムのデバイス ドライバを書く必要が生じるのはほぼ間違いありません。また、Windows CEを構成して必要なデバイス処理コンポーネントを入れたり、ハードウェアのためにWindows CEのOEM抽象レイヤ(OAL)をカスタマイズしたりする必要があるかもしれません。
アプリケーション レベルでは、システムのデバイスの要求を満たすインターフェイス コードを書く必要があります。Windows CEドライバ開発キット(Embedded Toolkitに含まれています)は、ユーザーにWin32対応のデバイス ドライバを作成する上で必要な情報と例を提供します。
ハードウェア プラットホーム固有の要求を満たすWindows CEのカスタマイズ バージョンを作成するためには、次のことをする必要があります。
- 必要なデバイス インターフェイスの数と種類を決定
- ハードウェア プラットホームとアプリケーションに必要なオペレーティング システム モジュールとコンポーネントを決定、対応する構成を選択(または作成)
- 開発プロジェクトとプラットホームにふさわしいビルド環境を構築。プロジェクトのビルド環境は、開発ホストのディレクトリ構造によって表され、プロジェクトとプラットフォームに合うように作成されます。
- Windows CEブート ローダをプラットホームへ移植
- ターゲット プラットフォームへCEシェル ユーティリティ(cesh)を移植。Ceshは開発ホスト上のパラレル ポート、シリアル ポート、またはイーサネット ポートを介して、ハードウェア プラットフォームにバイナリ ファイルをダウンロードする手段を提供します。
- OALを設計、実装、移植。OALは、コンパイルののち、Embedded Toolkitで提供されるオペレーティング システム カーネル ライブラリにリンクされ、ターゲット プラットフォームのシステム アーキテクチャ向けの実行可能カーネルが生成されます。
- 必要なすべての組み込みデバイス ドライバを移植。Embedded Toolkitには、開発プラットホームに移植できる、あらかじめ作成済みのデバイス ドライバがいくつか含まれています。提供されたドライバを使用する必要はありませんが、かなりの時間を節約できます。
- 必要な、あらゆるインストール可能なデバイス ドライバを作成、移植
- 必要があれば、カスタムのシェルとアプリケーションを設計、実装
- 提供されているBuildユーティリティを実行して、カスタマイズされたWindows CEオペレーティング システムを作成
- Buildrelユーティリティを実行して、ROMイメージに必要な全ファイルをコピー
- Makeimgユーティリティを実行して、バイナリROMイメージを作成
- Ceshユーティリティを使用して、バイナリROMイメージをプラットホームにコピー
- 提供されているデバッグ ツール(Windbg.exe、Memtool.exeなど)を使用して、ターゲット プラットホーム上で、カスタマイズされたWindows CEをテスト、デバッグ
ご覧のように、カスタマイズしたバージョンのWindows CEを作成、実装するには、たくさんの手順を踏む必要があります。幸いなことに、Embedded Toolkitがこの工程を簡単にする充実したツール群を提供しているので、組み込みアプリケーションの実装とデバッグに集中できます。Embedded Toolkitには、オペレーティング システム ビルドのサンプルも含まれているので、必要な手順もより深く理解できます。
構成例
特定の組み込みアプリケーションのために、Windows CEモジュールとコンポーネントの適切な組み合わせを選択するのは、複雑で時間のかかる仕事です。選択できるオプションのモジュールやコンポーネントはたくさんあり、これらのモジュールとコンポーネントの中には、相互依存しているものが多くあります。モジュールとコンポーネントを簡単に選択できるように、Embedded Toolkitには、あらかじめテストを済ませてあるいつかの構成が含まれています。以下に示す4つの例は、これら正式にテストされた構成の一部です。
構成例:基本カーネル
Embedded Toolkitで提供される基本カーネル プロジェクトは、最小構成のアプリケーション向けにWindows CEを構成する方法を示します。これには、ユーザー入力(キーボード)に対するサポートが含まれますが、表示機能は含まれません。また、デバイスと通信の機能は最小限です。Windows CEのこのバージョンには、GwesとCoreDLLモジュールを作成するために必要な最小限のコンポーネントが含まれており、ファイル システム モジュール、データベース、レジストリ、パスワード コンポーネントを作成するために必要なコンポーネントだけが含まれます。Embedded Toolkitには、このプロジェクトから、RAMファイル システムやデータベースなどのオプション コンポーネントを除外した2つのバリエーションがあります。プロジェクトに含まれているサンプル アプリケーションは、キーボード入力を受け付け、適切なキーボード(VK)コードをデバッグ用シリアル ポートに出力します。
この構成例は、次の機能をサポートします。
- コア オペレーティング システム(カーネル)
- Ceshデバッグ シェルとデバッグ用に提供されるToolhelpモジュール
- パスワード サポート
- キーボード入力サポート
- RAMファイル システムはない
- 通信機能はない
これらの機能をサポートするために、サンプル プロジェクトには以下のモジュールとコンポーネントが含まれます。
モジュール/コンポーネント | 関連サンプル アプリケーション | |
---|---|---|
Coredll | オペレーティング コアDLLモジュール(必須) | |
Coremain | 必須コンポーネント | |
Coreloc | 必須コンポーネント | |
Fmtmsg | CoreDLLコンポーネント | |
Lmem | 必須コンポーネント | |
Thunks | 必須コンポーネント | |
Filesys | ファイル システム モジュール | |
Fsdbase | データベース コンポーネント | |
Fsmain | ファイル システム メイン コンポーネント | |
Fsysram | RAMとROMファイル システム コンポーネント | |
Fsheap | ヒープ ファイル システム コンポーネント | |
Fsreg | レジストリ コンポーネント | |
Fspass | パスワード コンポーネント | |
Pmstub | ポスト メッセージ スタブ コンポーネント | |
Nk | オペレーティング システム カーネル(必須) | |
Toolhelp | Toolhelp(デバッガ サポート)モジュール | |
Shell | デバッグ シェル |
構成例:通信機能の追加
このEmbedded Toolkitサンプル プロジェクトは(先に説明したような)、ユーザー インターフェイス コンポーネントのない、Windows CEの部分的なバージョンを作成します。ただしこのバージョンは、TCP/IP、PPP、NDIS、IRComm、IRDA、Serial、WinInet、Secure sockets、NTLM本人認証、TAPI、Unimodem、Redirなど、Windows CEで利用できるほとんどのデータ通信とネットワーキング コンポーネントを含んでいます。このプロジェクトのバリエーションとしては、IRComm、IRDA、Serialコンポーネントのみ、またはTCPとNDISコンポーネントのみを含むプロジェクトがあります。
このデモンストレーション プロジェクトには、RASDEMOと呼ばれる簡単な通信アプリケーション用のソース コードが含まれています。このサンプル アプリケーションは、ターゲット プラットホーム上で電話帳エントリを作成し、指定されたリモート アクセス サーバー(RAS)への接続を試みます。プロジェクトは、以下のWindows CE機能を使用します。
- コア オペレーティング システム(カーネル)
- デバッグ
- TAPI
- ネットワーキング(Winsock、NDISなど)
- PCカード(PCMCIAドライバ)サービス
- 最小限のGwes(通信サポート用)
このサンプル プロジェクトには、以下のWindows CEモジュールとコンポーネントが含まれます(ビルドのバリエーションに応じて異なる)。
モジュール/コンポーネント名 | 説明 | |
---|---|---|
Afd | AFDモジュール | |
Arp | ARPモジュール | |
Cardserv | カード サービス(PCMCIAドライバ)モジュール | |
Coredll | オペレーティング コアDLLモジュール(必須) | |
Coremain | 必須コンポーネント | |
Coreloc | 必須コンポーネント | |
Lmem | 必須コンポーネント | |
Thunks | 必須コンポーネント | |
Fmtmsg | CoreDLLコンポーネント | |
Rectapi | GDIサポート コンポーネント | |
wmgr_c | ウィンドウ マネージャ コンポーネント | |
serdev | シリアル デバイス サポート コンポーネント | |
tapilib | TAPIテレフォニー サポート コンポーネント | |
cryptapi | 暗号コンポーネント | |
rsa32 | RSA暗号化コンポーネント | |
Cxport | 共通転送ユーティリティ コンポーネント | |
Device | インストール可能デバイス マネージャ モジュール | |
Dhcp | 動的ホスト構成モジュール | |
Elnk3 | Elnk3モジュール | |
Filesys | ファイル システム モジュール | |
Fsmain | ファイル システム メイン コンポーネント | |
Fsysram | RAMとROMファイル システム コンポーネント | |
Fsheap | ヒープ ファイル システム コンポーネント | |
Fsreg | レジストリ コンポーネント | |
Gwes | Graphics, windowing and eventsモジュール | |
Calibrui | タッチ パッド キャリブレーションU/Iコンポーネント | |
Mgbase | GDI基本コンポーネント | |
Mgbitmap | GDIビットマップ コンポーネント | |
Mgblt | BitBltコンポーネント | |
mgblt2 | ビットマップ転送サポート コンポーネント | |
vmgdc | デバイス コンテキスト サポート コンポーネント | |
mgdibsec | CreateDIBSection APIコンポーネント | |
mgdraw | 描画、描画ツール コンポーネント | |
mgdrwtxt | テキスト描画サポート コンポーネント | |
mgpal | パレット サポート コンポーネント | |
mgprint | 印刷サポート コンポーネント | |
mgrgn | 領域描画サポート モジュール | |
mgtt | TrueTypeフォント サポート コンポーネント | |
mgwinmgr | ScrollDCサポート コンポーネント | |
wmbase | GWES基本コンポーネント | |
gweshare | GWESコンポーネント | |
gwesmain | GWESメイン コンポーネント | |
immthunk | Thunkingコンポーネント | |
msgque | メッセージ キュー コンポーネント | |
loadstr | 文字列読み込みコンポーネント | |
tchui | タッチ パッドU/Iコンポーネント | |
gsetwinlong | WindowLong設定/取得コンポーネント | |
Ircomm | IrDA通信モジュール | |
Irdastk | IrDAスタック モジュール | |
Ndis | NDISネットワーク モジュール | |
Ne2000 | NE2000モジュール | |
Netbios | Netbiosモジュール | |
Netdetec | ネットワーク検知(ping)モジュール | |
Netui | ネットワークU/Iモジュール | |
Nk | オペレーティング システム カーネル(必須) | |
Ntlmssp | Ntlmsspモジュール | |
Ppp | Point-to-pointプロトコル モジュール | |
Redir | リダイレクタ モジュール | |
Rsabase | RSA暗号化モジュール | |
Secur32 | セキュリティ サービス プロバイダ インターフェイス モジュール | |
Schannel | SSL/PCTセキュア ソケット層 | |
Shell | デバッグ シェル モジュール | |
Tapi | TAPIサポート モジュール | |
Tcpstk | TCP/IPスタック モジュール | |
Toolhelp | Toolhelp(デバッガ サポート)モジュール | |
Winsock | Winsockサービス モジュール | |
Sslsock | SSL Winsockサポート モジュール | |
Unimodem | Unimodemモジュール | |
Wininet | インターネット サポート モジュール | |
Inetftp | FTPプロトコル コンポーネント |
構成例:最小限の表示機能
このデモンストレーション プロジェクトは、GwesとCoreDLLを含め、Windows CEファイル システムのほぼ完全なバージョンを作成します。この構成には、タッチ・パッド入力装置、オーディオ、その他H/PCやほかのハンドヘルド デバイスで一般的な機能に対するサポートが含まれます。ただし、最小構成のGwesモジュールが含まれており、ウィンドウ管理機能はサポートされません。
Embedded Toolkitで提供されるサンプル プロジェクトには、ターゲット プラットホームのグラフィック出力をテストするアプリケーション(Polygons.exe)が含まれます。
このサンプル プロジェクトは、次のWindows CE機能を提供します。
- コア オペレーティング システム(カーネル)
- デバッグのサポート
- Ceshデバッグ シェル
- MGDI (graphics, windowing and events) のサポート
- タッチ ディスプレイ パネルのサポート
これらの機能をサポートするために、プロジェクトには以下のWindows CEモジュールとコンポーネントが含まれてます。
モジュール/コンポーネント | 説明 | |
---|---|---|
Coredll | オペレーティング コアDLLモジュール(必須) | |
Coremain | 必須コンポーネント | |
Coreloc | 必須コンポーネント | |
Fmtmsg | CoreDLLコンポーネント | |
Lmem | 必須コンポーネント | |
Thunks | 必須コンポーネント | |
mgdi_c | GDIサポート コンポーネント | |
Rectapi | GDIサポート コンポーネント | |
wmgr_c | ウィンドウ マネージャ コンポーネント | |
Filesys | ファイル システム モジュール | |
Fsmain | ファイル システム メイン コンポーネント | |
Fsysram | RAMとROMファイル システム コンポーネント | |
Fsheap | ヒープ ファイル システム コンポーネント | |
Fsreg | レジストリ コンポーネント | |
Fspass | パスワード コンポーネント | |
Fsdbase | データベース コンポーネント | |
Gwes | GWESモジュール | |
Calibrui | タッチ パッド キャリブレーションU/Iコンポーネント | |
Foregnd | フォアグラウンド ウィンドウ コンポーネント | |
Getpower | バッテリー電源コンポーネント | |
Gsetwinlong | WindowLong取得/設定コンポーネント | |
Gweshare | GWESコンポーネント | |
Gwesmain | GWESメイン コンポーネント | |
Idle | システム アイドル コンポーネント | |
Immthunk | Thunkingコンポーネント | |
Kbdui | キーボード インターフェイス コンポーネント | |
Loadstr | 文字列読み込みコンポーネント | |
Mgbase | GDI基本コンポーネント | |
Mgbitmap | GDIビットマップ コンポーネント | |
Mgblt | BitBltコンポーネント | |
mgblt2 | ビットマップ転送サポート コンポーネント | |
Mgdc | デバイス コンテキスト サポート コンポーネント | |
Mgdibsec | CreateDIBSection APIコンポーネント | |
Mgdraw | 描画、描画ツール コンポーネント | |
Mgrgn | 領域描画サポート コンポーネント | |
Mgwinmgr | ScrollDCサポート コンポーネント | |
Mgtt | TrueTypeフォント サポート コンポーネント | |
Mgprint | 印刷サポート コンポーネント | |
Mgdrwtxt | テキスト描画サポート コンポーネント | |
Mgpal | パレット サポート コンポーネント | |
Msgbeep | MessageBeep APIコンポーネント | |
Msgque | メッセージ キュー コンポーネント | |
Nled | 通知LEDコンポーネント | |
Tchui | タッチ パッドU/Iコンポーネント | |
Uibase | ユーザー インターフェイス基本コンポーネント | |
Wmbase | GWES基本 コンポーネント | |
Nk | オペレーティング システム カーネル(必須) | |
Shell | デバッグ シェル | |
Toolhelp | Toolhelp(デバッガ サポート)モジュール |
構成例:ウィンドウ管理機能の追加
このサンプル プロジェクトには、完全なグラフィックと描画のサポート、TrueTypeフォント、OLEインターフェイス、通信機能、PCカード(PCMCIA)デバイス、その他の先進機能を含め、Windows CEで使用可能なほとんどすべてのモジュールとコンポーネントが含まれます。このサンプルは、H/PCの代表的な機能の組み合わせを表します。
構成を検証するのに役立つ2つのサンプル アプリケーションがEmbedded Toolkitで提供されます。
このサンプル プロジェクトは、次のWindows CE機能に対するサポートを提供します。
- コア オペレーティング システム(カーネル)
- Ceshデバッグ シェルおよびデバッグのサポート
- COMとオートメーション
- 通信
- インストール可能なデバイス ドライバのサポート
- 完全なGDIのサポート
このサンプル プロジェクトには、以下のWindows CEモジュールとコンポーネントが含まれます。
モジュール/コンポーネント | 説明 | |
---|---|---|
Afd | AFDコンポーネント | |
Atadisk | ATAディスク サポート モジュール | |
Cegsm | GEGSMモジュール | |
Console | コンソール コンポーネント | |
Coredll | オペレーティング コアDLLモジュール(必須) | |
accel_c | CreateAcceleratorテーブル コンポーネント | |
coreimm | 入力方式マネージャ コンポーネント | |
coremain | 必須コンポーネント | |
coreloc | 必須コンポーネント | |
coresiow | Unicode列書式化関数コンポーネント | |
corestrw | Unicode標準入出力関数コンポーネント | |
lmem | 必須コンポーネント | |
thunks | 必須コンポーネント | |
fmtmsg | CoreDLLコンポーネント | |
fpemul | 浮動小数点エミュレーション コンポーネント | |
rectapi | GDIサポート コンポーネント | |
wmgr_c | ウィンドウ マネージャ コンポーネント | |
serdev | シリアル デバイス コンポーネント | |
tapilib | TAPIテレフォニー サポート コンポーネント | |
mgdi_c | GDIサポート コンポーネント | |
wavelib | マルチメディア サポート コンポーネント | |
Cxport | 共通転送ユーティリティ モジュール | |
Device | インストール可能デバイス マネージャ モジュール | |
Fatfs | FATファイル システム モジュール | |
Filesys | ファイル システム モジュール | |
Fsmain | ファイル システム メイン コンポーネント | |
Fsysram | RAMとROMファイル システム コンポーネント | |
Fsheap | ヒープ ファイル システム コンポーネント | |
Fsreg | レジストリ コンポーネント | |
Fspass | パスワード コンポーネント | |
Fsdbase | データベース コンポーネント | |
Gwes | GWES モジュール | |
Accel | アクセラレータ コンポーネント | |
Audio | オーディオ コンポーネント | |
Btnctl | ボタン コントロール コンポーネント | |
Calibrui | タッチ パッド キャリブレーションU/Iコンポーネント | |
Caret | Caretコンポーネント | |
Cascade | カスケード メニュー コンポーネント | |
Cdlctl | Candidateリスト コントロール コンポーネント | |
Clipbd | クリップボード コンポーネント | |
Cmbctl | コンボ ボックス コントロール コンポーネント | |
Defwndproc | ウィンドウ プロシージャ定義コンポーネント | |
Dlgmgr | ダイアログ マネージャ コンポーネント | |
Dlgmnem | ダイアログ ニーモニック コンポーネント | |
Edctl | 編集コントロール コンポーネント | |
Foregnd | フォアグラウンド ウィンドウ コンポーネント | |
Gcache | GWES初期化コンポーネント | |
Getpower | バッテリー電源コンポーネント | |
Gsetwinlong | WindowLong取得/設定コンポーネント | |
Gwectrl | GWES基本コンポーネント | |
Gweshare | GWESコンポーネント | |
Gwesmain | GWESメイン コンポーネント | |
Icon | アイコン コンポーネント | |
Iconcmn | コア アイコン コンポーネント | |
Iconcurs | マウス カーソル コンポーネント | |
Idle | システム アイドル コンポーネント | |
Imgctl | イメージ コントロール コンポーネント | |
Immthunk | Thunkingコンポーネント | |
Kbdui | キーボード インターフェイス コンポーネント | |
Lbctl | リスト ボックス コンポーネント | |
Loadstr | 文字列読み込みコンポーネント | |
Loadbmp | ビットマップ読み込みコンポーネント | |
Loadimg | イメージ読み込みコンポーネント | |
Mcursor | カーソル コンポーネント | |
mcursor8 | 標準ウィンドウ カーソル コンポーネント | |
menu | メニュー コンポーネント | |
menuscrl | スクロール メニュー コンポーネント | |
msgbeep | MessageBeep APIコンポーネント | |
msgbox | メッセージ ボックス コンポーネント | |
msgbox2 | カラー メッセージ ボックス コンポーネント | |
mgbase | GDI基本コンポーネント | |
mgbitmap | GDIビットマップ コンポーネント | |
mgblt | BitBltコンポーネント | |
mgblt2 | ビットマップ転送サポート コンポーネント | |
mgdc | デバイス コンテキスト サポート コンポーネント | |
mgdibsec | CreateDIBSection APIコンポーネント | |
moverlap | オーバーラップ メニュー コンポーネント | |
mgdraw | 描画、描画ツール コンポーネント | |
mgrgn | 領域描画サポート コンポーネント | |
mgwinmgr | ScrollDCサポート コンポーネント | |
mgrast | フォント サポート コンポーネント | |
mgrast2 | フォント サポート コンポーネント | |
mgdrwtxt | テキスト描画サポート コンポーネント | |
mgpal | パレット サポート コンポーネント | |
mgpalnat | ナチュラル パレット コンポーネント | |
msgque | メッセージ キュー コンポーネント | |
mtapui | TapメニューU/Iコンポーネント | |
nclient | 非クライアント ウィンドウ領域コンポーネント | |
nled | 通知LEDコンポーネント | |
oom | メモリ不足コンポーネント | |
oomui | メモリ不足U/Iコンポーネント | |
scbctl | スクロール バー コントロール | |
startui | 起動ダイアログU/Iコンポーネント | |
startup | 起動コンポーネント | |
stcctl | スタティック コントロール コンポーネント | |
tchui | タッチ パッドU/Iコンポーネント | |
timer | タイマー コンポーネント | |
uibase | ユーザー インターフェイス基本コンポーネント | |
winmgr | ウィンドウ マネージャ コンポーネント | |
wmbase | GWESベース コンポーネント | |
Ircomm | IrDA通信モジュール | |
Irdastk | IrDA通信サポート モジュール | |
Ndis | ネットワーク ドライバ コンポーネント | |
Netui | ネットワークU/Iモジュール | |
Nk | オペレーティング システム カーネル(必須) | |
Ntlmssp | NTLMSSPモジュール | |
Ole32 | OLEサポート モジュール | |
Com | COMインターフェイス サポート コンポーネント | |
Olemain | OLEメイン コンポーネント | |
Oleauto32 | OLEオートメーション モジュール | |
Ppp | Point-to-pointプロトコル モジュール | |
Secur32 | セキュリティ サポート プロバイダ インターフェイス モジュール | |
Shell | デバッグ シェル モジュール | |
Sramdisk | SRAM(PCMCIA)カード デバイス モジュール | |
Tapi | TAPIテレフォニー モジュール | |
Tcpstk | TCP/IPスタック モジュール | |
Toolhelp | Toolhelp(デバッガ サポート)モジュール | |
Uuid | UUIDサポート モジュール | |
Unimodem | Unimodemサポート モジュール | |
Waveapi | マルチメディア サウンドAPIモジュール | |
Wininet | インターネット サービス モジュール | |
Inetftp | インターネット ファイル転送コンポーネント | |
Winsock | Winsockサポート モジュール | |
sslsock | SSL Winsockコンポーネント |
まとめ
本稿では、組み込みアプリケーションの固有なニーズに応じて、Windows CEオペレーティング システムをカスタム構成する方法を示しました。Windows CEのモジュール型のアーキテクチャと、コンパクトで効率的な設計の融合により、広く知られていて一貫性のあるプログラミング インターフェイスのすべてのメリットを維持しながら、高度に効率的な組み込みアプリケーションの作成が可能です。
詳細情報
シェル サポート コンポーネントを使用した、カスタマイズされた独自のシェルを作成する方法の詳細については、"Implementing a Custom Shell on a Microsoft Windows CE-Based Device"を参照してください。
Windows CEオペレーティング システムをビルドするために使うツールと工程に関する完全なドキュメントは、Windows CE Embedded Toolkit for Visual C++ 5.0に含まれています。