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