A Little Windows CE History
To understand the history of Windows CE, you need to understand the differences between the operating system and the products that use it. The operating system is developed by a core group of programmers inside Microsoft. Their product is the operating system itself. Other groups, who develop devices such as the Pocket PC, use the newest version of the operating system that's available at the time their product is to be released. This dichotomy has created some confusion about how Windows CE has evolved. Let's examine the history of each, the devices and the operating system itself.
The Devices
The first products designed for Windows CE were handheld "organizer" devices with 480-by-240 or 640-by-240 screens and chiclet keyboards. These devices, dubbed Handheld PCs, were first introduced in late 1996. Fall Comdex 97 saw the release of a dramatically upgraded version of the operating system, Windows CE 2.0, with newer hardware in a familiar form—this time the box came with a 640-by-240 landscape screen, sometimes in color, and a somewhat larger keyboard.In January 1998 at the Consumer Electronics Show, Microsoft announced two new platforms, the Palm-size PC and the Auto PC. The Palm-size PC was aimed directly at the pen-based organizer market dominated by Palm OS–based systems. The Palm-size PC featured a portrait mode and a 240-by-320 screen, and it used stylus-based input. Unfortunately for Windows CE fans, the public reception of the original Palm-size PC was less than enthusiastic.Later that year, a new class of mini-laptop–style Windows CE machines with touch-typable keyboards and VGA or Super VGA screens made their appearance. These machines, called H/PC Professionals, provided 10 hours of battery life combined with improved versions of Microsoft's Pocket Office applications. Many of these machines had built-in modems, and some even diverged from the then-standard touch screen, sporting track pads or IBM's TrackPoint devices.
In April 2000, Microsoft introduced the Pocket PC, a greatly enhanced version of the old Palm-size PC. The original Pocket PC used a prerelease of the more full-featured Windows CE 3.0 operating system under the covers. The user interface of the Pocket PC was also different, with a cleaner, 2D, look and a revised home page, the Today screen. The most important feature of the Pocket PC, however, was the greatly improved performance of Windows CE. Much work had been done to tune Windows CE for better performance. That improvement, coupled with faster CPUs, allowed the system to run with the zip expected from a pocket organizer. With the Pocket PC, the inevitability of Moore's Law enabled Windows CE devices to cross over the line: the hardware at this point was now capable of providing the computing power that Windows CE required.The Handheld PC was updated in 2000 to use Windows CE 3.0. Although these systems (now called the Handheld PC 2000) haven't been a consumer success, they have found a home in the industrial market, where their relative low cost, large screens, and great battery life satisfy a unique niche market.The Pocket PC was updated in late 2001 with a release named Pocket PC 2002. This release was based on the final released version of Windows CE 3.0 and contained some user interface improvements. An exciting development was the addition of the Pocket PC Phone Edition, which integrated cellular phone support into a Pocket PC device. These devices combined the functionality of a Pocket PC with the connectivity of a cellular phone, enabling a new generation of mobile but always connected software.Another group within Microsoft released the Smart Display, a Windows CE .NET 4.1–based system that integrated a tablet form factor device with wireless networking and a base connected to a PC. When the Smart Display is in its base, it's a second monitor; when removed, it becomes a mobile display for the PC.In the spring of 2003, the Pocket PC team released an update of the Pocket PC called the Pocket PC 2003. This system, while not providing much of a change to the user interface, did provide a huge increase in stability and performance because it was based on Windows CE .NET 4.2. The Pocket PC 2003 also added integrated Bluetooth support for those OEMs that chose to include it.Microsoft has also been working with OEMs to produce cellular phones based on Windows CE. A smattering of these phones, called Smartphones, were released in late 2002 and were initially based on Windows CE 3.0. An upgrade in 2003 moved the Smartphone to Windows CE 4.2 and increased the feature set of the device to include the .NET runtime.New devices are being introduced all the time. An example are the Media to Go devices, which are mobile video players using a hard disk for storage. The power of the Windows CE operating system enables applications that are beyond the capability of systems with simpler operating systems to run on these devices.
The Operating System
Although these consumer-oriented products made the news, more important development work was going on in the operating system itself. The Windows CE operating system has evolved from the days of 1.0, when it was a simple organizer operating system with high hopes. Starting with Windows CE 2.0 and continuing to this day, Microsoft has released embedded versions of Windows CE that developers can use on their custom hardware. Although consumer platforms such as the Pocket PC get most of the publicity, the improvements to the base operating system are what enable devices such as the Pocket PC and the Smartphone.Windows CE 2.0 was released with the introduction of the Handheld PC 2.0 at Fall Comdex 1997. Windows CE 2.0 added networking support, including Windows standard network functions, a Network Driver Interface Specification (NDIS) miniport driver model, and a generic NE2000 network card driver. Added COM support allowed scripting, although the support was limited to in-proc servers. A display driver model was also introduced that allowed for pixel depths other than the original 2-bits-per-pixel displays of Windows CE 1.0. Windows CE 2.0 was also the first version of the operating system to be released separately from a product such as the H/PC. Developers could purchase the Windows CE Embedded Toolkit (ETK), which allowed them to customize Windows CE to unique hardware platforms. Developers who used the ETK, however, soon found that the goal of the product exceeded its functionality.With the release of the original Palm-size PC in early 1998, Windows CE was improved yet again. Although Windows CE 2.01 wasn't released in an ETK form, it was notable for its effort to reduce the size of the operating system and applications. In Windows CE 2.01, the C runtime library, which includes functions such as strcpy to copy strings, was moved from a statically linked library attached to each EXE and DLL into the operating system itself. This change dramatically reduced the size of both the operating system and the applications themselves.In August 1998, Microsoft introduced the H/PC Professional with a new version of the operating system, 2.11. Windows CE 2.11 was a service pack update to Windows CE 2.1, which was never formally released. Later in the year, Windows CE 2.11 was released to the embedded community as Microsoft Windows CE Platform Builder version 2.11. This release included support for an improved object store that allowed files in the object store to be larger than 4 MB. This release also added support for a console and a Windows CE version of CMD.exe, the classic MS-DOS–style command shell. Windows CE 2.11 also included Fast IR to support IrDA's 4-MB infrared standard, as well as some specialized functions for IP multicast. An initial hint of security was introduced in Windows CE 2.11: a device could now examine and reject the loading of unrecognized modules.
Windows CE 2.12 was also a service pack release to the 2.1, or Birch, release of Windows CE. The big news in this release was a greatly enhanced set of Platform Builder tools that included a graphical front end. The operating system was tweaked with a new notification interface that combined the disparate notification functions. The notification user interface was exposed in the Platform Builder to allow embedded developers to customize the notification dialog boxes. A version of Microsoft's PC-based Internet Explorer 4.0 was also ported to Windows CE as the Genie, or Generic IE control. This HTML browser control complements the simpler but smaller Pocket Internet Explorer. Microsoft Message Queue support was added as well. The "go/no go" security of Windows CE 2.11 was enhanced to include a "go, but don't trust" option. Untrusted modules can run—but not call—a set of critical functions, nor can they modify parts of the registry.The long-awaited Windows CE 3.0 was finally released in mid-2000. This release followed the April release of the Pocket PC, which used a slightly earlier internal build of Windows CE 3.0. The big news for Windows CE 3.0 was its kernel, which was optimized for better real-time support. The enhanced kernel support includes 256 thread priorities (up from 8 in earlier versions of Windows CE), an adjustable thread quantum, nested interrupt service routines, and reduced latencies within the kernel.The improvements in Windows CE 3.0 didn't stop at the kernel. A new COM component was added to complement the in-proc COM support available since Windows CE 2.0. This new component included full COM out-of-proc and DCOM support. The object store was also improved to support up to 256 MB of RAM. File size limits within the object store were increased to 32 MB per file. An Add-On Pack for the Platform Builder 3.0 added even more features, including improved multimedia support though a media player control; improved networking support (and XML support) with PPTP, ICS, and remote desktop display support; and a formal introduction of the DirectX API.The next release of Windows CE involved more than just new features; the name of the product was also changed. Windows CE .NET 4.0, released in early 2001, changed the way virtual memory was organized, effectively doubling the virtual memory space per application. Windows CE .NET 4.0 also added a new driver loading model, services support, a new file-based registry option, Bluetooth, 802.11, and 1394 support. Ironically, while .NET was added to the name, Windows CE .NET 4.0 didn't support the .NET Compact Framework.Late in 2001, Windows CE 4.1 was a follow-on to Windows CE 4.0, adding IP v6, Winsock 2, a bunch of new supporting applets, and an example Power Manager. Windows CE 4.1 also supports the .NET Compact Framework. The final bits of the .NET runtime were released as a quick fix engineering (QFE) package after the operating system shipped.
The second quarter of 2003 saw the release of Windows CE .NET 4.2. This update provided cool new features for OEMs wanting to support Pocket PC applications on embedded systems. The Pocket PC–specific APIs that support menu bars, the soft input panel (SIP), and other shell features were moved to the base operating system. The Explorer shell was rewritten to support namespace extensions. The performance of the kernel was improved by directly supporting hardware paging tables on some CPUs.Because Windows CE is a work in progress, the next version of Windows CE is being developed. I'll be updating my Web site, www.bolingconsulting.com, with information about this release as it becomes available.