Windows Embedded Compact

Windows Embedded Compact（曾被稱為Microsoft Windows CE），為微軟研發的嵌入式作業系統，可以應用在各種嵌入式系統，或是硬體規格較低的電腦系統（例如很少的記憶體，較慢的中央處理器等）。微軟並未定義CE縮寫由來，一般解釋則有Compact Edition、Customer Embedded、Consumer Electronics等等。在2008年4月15日舉行的嵌入式系統大會上，微軟宣布將Windows CE更名為Windows Embedded Compact，與Windows Embedded Enterprise、Windows Embedded Standard和Windows Embedded POSReady組成Windows Embedded系列產品。

## 概覽

<image>

Windows CE 1.0最早於1996年推出，是單色的Windows 95簡化版本。

1997年Fall Comdex大會上公佈的Windows CE 2.0仍是基於Win95的作業系統，效率遠高於1.0版。

Windows CE 3.0是微軟的Windows Compact Edition，已擺脫舊有的Windows 95簡化格式，是一套全新的作業系統，支持5種CPU：x86、PowerPC、ARM、MIPS、SH3/4。並且改名為Windows for Pocket PC，簡稱Pocket PC。

2002年1月微軟又推出Windows CE.Net，即Windows CE 4.0。

2004年5月份推出Windows CE 5.0，開放有250萬行原始碼。

2006年11月，微軟推出Windows Embedded CE 6.0。

2010年10月，微軟推出 Windows Phone 7，Windows Embedded Compact 7。

Windows CE可以使用在各式各樣的系統上，最有名的是Pocket PC以及微軟的SmartPhone。其他較不為人知的裝置包括微軟的車載電腦、機頂盒、生產線上的控制設備、公共場所的資訊站（Kiosk）、電子辭典及導航儀等等，有些裝置甚至沒有任何人機介面。

Windows CE並非從桌上型電腦的Windows（NT，98，XP……）修改縮小而來，而是使用一套完全重新設計的核心，所以它可以在功能非常有限的硬體上執行。雖然核心不同，但是它卻提供了高度的Win32 API軟體開發介面的相容性，功能有記憶體管理、文件操作、多線程、網路功能等。因此，開發桌上型電腦軟體的人可以很容易編寫甚或直接移植軟體到Windows CE上。

一個與其他微軟作業系統的差異是Windows CE提供原始碼，首先已經提供了原始碼給部分廠商，讓廠商能夠依照他們自己的硬體架構修改原始碼，例如在Windows CE的開發IDE軟體Platform Builder中就提供了許多開放原碼的常用軟體元件，但是一些與硬體架構的軟體元件仍然以二進制檔案形式來提供。

## 版本

<image>

版本｜改動

1.0｜發佈於1996年11月MSCE1。代號Pegasus。、使用該OS的設備被命名為「handheld PC」〈HPC〉。

2.0｜發佈於1997年9月MSCE2。代號Mercury/Gryphon/Apollo/Alder/Alder EP/Birch/Birch SP2/Jupiter/Wyvern/Goldeneye。、以Palm-sized PC/Pocket PC為名的設備出現。、即時排程演演算法。、支援系統架構：ARM，MIPS，PowerPC，StrongARM，SuperH及x86。、32-bit彩色螢幕。、SSL 2.0及SSL 3.0。

3.0｜發佈於2000年六月MSCE3。代號Cedar。、針對核心進行重寫使CE的即時性推進至微秒層級。、Pocket PC 2000，Pocket PC 2002及Smartphone 2002的基礎。、優先級數從8增加至256。、系統物件數從65 536增加至4億1900多萬。、使用特殊的APIs對系統進行存取，對登錄檔的寫操作也被限制在部分區域。

4.x｜發佈於2002年1月。MSCE4。代號Talisker/Jameson/McKendric。、更改部份驅動結構並增加新功能。、以"Pocket PC 2003"為基礎。、提供藍牙支持。、支持TLS（SSL 3.1），IPsec L2TP VPN、Kerberos。

5.0｜發佈於2004年8月。新增了許多功能。代號"Macallan".、自動向生產商發送錯誤報告。、移動式Direct3D，一個基於COM的Windows XP DirectX多媒體API版本。、2D圖形DirectDraw和攝像頭與影片的DirectShow數字化支持。、支持Remote Desktop Protocol（RDP）。

6.x｜發佈於2006年9月。代號"Yamazaki".、進程地址空間從32 MB增加至1 GB、進程數目從32增加至768、可以使用使用者模式和內核模式的設備驅動。、Device.exe, filesys.exe, GWES.exe被轉移至內核模式中。、SetKMode and set process permissions not possible.、增強系統調用的性能。

7.x｜7.0 發佈於2010年10月。7.5 發佈於2011年9月 詳見Windows Phone 7、雙核心處理器支援（SMP、ARMv6）、WIFI定位系統、藍牙3.0 + HS、Cellcore、DLNA（數位生活網路聯盟）、數位版權管理、媒體傳輸協議、IE8 Rendering Rich Media Plug-Ins、NDIS 6.1支援、UX C++ XAML API如使如Windows Presentation Foundation和Silverlight的使用者界面、更佳觸摸和手勢輸入

CE v3.0是Pocket PC 2002的基礎. CE v3.0的下代為CE.net.

"PocketPC 是核心Windows CE OS上的一整層程式... Pocket PC以Windows CE為基礎，但分發的方式不太一樣.". Pocket PC的使用證書禁止修改WinCE的程式.

## 功能

停產前最新的Windows CE為Windows CE 7.0，這個版本在核心部分支援：

<image>

- 雙核心處理器支援（SMP、ARMv6）
- WIFI定位系統
- 藍牙3.0 + HS
- Cellcore
- DLNA（數位生活網路聯盟）
- 數位版權管理（DRM）
- 媒體傳輸協議（MTP）
- IE8 Rendering Rich Media Plug-Ins
- NDIS 6.1支援
- UX C++ XAML API如使如Windows Presentation Foundation和Silverlight的使用者界面
- 更佳觸摸和手勢輸入

在開發環境上，微軟也提供相容於.NET Framework的開發元件：.NET Compact Framework，讓正在學習.NET或已擁有.NET程式開發技術的開發人員能迅速而順利的在搭載Windows CE .NET系統的裝置上開發應用程式。

用於掌上電腦Pocket PC以及智慧型手機Smart Phone上的Windows CE系統稱為Windows Mobile，目前成熟的最新版本為Windows 10 Mobile。

在2009年10月6日，Windows Mobile亦正式改名為Windows Phone.

## 開發工具

Windows CE可支援MFC，ATL，STL，COM，ActiveX，以及.NET Compact Framework。開發工作可以分為：

- Platform Builder:這個工具是一個編譯平台（BSP + 作業系統核心）、驅動程式以及應用程式，是一個可以做單部執行的開發環境，也可以用來傳送SDK到目標平台再搭配另外一個下面的工具來使用。
- Free Pascal and Lazarus:版本2.2.0以後的Free Pascal都有Windows CE支持（包括ARM和x86）。隨後，Windows CE頭文件也被翻譯，供Lazarus（一個基於Free Pascal的快速應用開發（RAD）軟體包）使用。使用者可以使用Lazarus IDE來設計Windows CE應用程式，並通過交叉編譯器（cross-compiler）生成用於Windows CE的可執行文件。
- Embedded Visual C++（eVC）這是一個用於開發基於Windows CE作業系統嵌入式應用程式的工具，這個工具可以使用由Platform Builder輸出的SDK。
- Visual C++ 2005/2008/2010其中Platform Builder 6.0 for Windows Embedded CE被改寫成Visual Studio 2005的一個插件。

## 限制

- Windows CE為UNICODE作業系統，但char不必改為TCHAR，WCHAR，因為Windows CE也支援非Unicode編程。
- Windows CE不支援重疊I/O。
- WinCE的許多APIs功能都受限，如CreateThread函數在許多參數在Windows CE下都不支持，第1、2、5的參數值必須設為NULL或0。

```c++
  HThread = CreateThread（NULL, 0, Thread, nParameter, 0, &dwThreadID);
```

## 基本資料

- 開發者：Microsoft
- 源碼模式：封閉（共享內核源代碼）
- 內核類別：混合核心
- 運作狀態：已停止支援 (2021年結束)
- 許可證：微軟EULA
- 網站： Windows CE