次の方法で共有


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に含まれています。