How is Windows Mobile related to Windows CE?

I keep getting the question “How is Windows Mobile related to Windows CE?” To be more precise I get lots of questions that don’t make sense if you understand the relationship between CE and Windows Mobile. So for my own sanity I'm going to document it here and then I can just point people at the post.


Let’s start with: What is Windows CE?


It’s a 'hard' real-time, pre-emptive, multi-tasking operating system built from the ground up to be a truly componentized OS. 'Windows CE' as a product consists of two main things: Platform Builder and a very large collection of software bits ... it is *not* is a finished OS.


The collection of bits is a superset of any one OS. For example there are multiple user interfaces, two browsers, lots and lots of different processor support packages. These 'bits' come in different flavours, some are shipped as a binary DLL ready for deployment, some are partially completed components in the form of .LIB files and some components ship as source. There are lots and lots of bits. Not all are required to make a running OS, intact some are mutually exclusive. That’s where Platform Builder comes in.


Platform Builder is an OS tool / workbench / IDE that is used to do a couple of things Firstly it helps you select the components that you want your version of Windows CE OS to contain. You get to choose basic things like a UI, file system, network components and browser. You also get to choose some of the more detailed things like what registry keys need to be set, what icons will be present on the desktop (if there is going to be a desktop). Windows CE can grow from a minimum size of around 250kb right up to a fully fledged 24MB OS. Platform Builder also doubles as a workbench for creating your own C++ projects that need to go into your OS which is ideal for building device driver components and other bits.


When all the components are selected Platform Builder is then used to 'build' your selected OS. This phase is a bit more like an assembly line rather than a traditional code build because it’s more about linking LIB files together and putting the right DLL's in the right location. When the OS is built Platform Builder then morphs into an OS debugging environment allowing the developer to deploy the OS image to a remote embedded computer or to an emulation environment and then step into the OS and debug right down to the kernel and see what’s going on.


Windows CE is great for developing bespoke, embedded OS's because it can be tailored to match the exact hardware available keeping HW and SW costs low, but it causes some interesting problems. Let’s say you, as a software dev, want to build and sell a new software widget for all Cow Milking Machines (CMM's). There are two manufacturers of these machines but both use Windows CE so you go ahead and write your wizzy new widget with a nice UI and using web services. It works fine on the first CMM but just wont fly run on the second because the manufacturer hasn't included a UI or a network stack!


How could you know? Who was at fault? There is no way to know unless you get an SDK from the device manufacturer, but even then it doesn’t make sense to maintain two code bases, one for each CMM system.


Ideally what’s needed for widely distributed systems such as a PDA is to enforce a fixed set of features and functions. And that is exactly what Windows Mobile does.


So what is Windows Mobile?


To an original device manufacturer (ODM) Windows Mobile is a set of pre-selected Windows CE components (chosen from the Windows CE OS bucket of bits just as Platform Builder would produces), some additional Windows Mobile specific components and a paper definition of required functionality, features and user experiences that the ODM must conform to. The ODM takes the components, adds in their device drivers and any additional feature apps and burns it into ROM of the device ready to ship.


Because the features of the OS are pre-defined, Microsoft can centrally distribute the SDK and help, and a developer can rely on the features being present and operating in the expected way.


So Windows Mobile is a specific subset of Windows CE components, combined with a set of Windows Mobile specific components with device specific drivers and extra’s defined by the OEM / ODM / Mobile Operator.


Some useful links:

Windows Embedded homepage

Windows CE homepage

Check out Mike Hall’s blog for Windows CE stuff

More about Windows CE and XPe

Windows Mobile FAQ

Windows Mobile Technologies


I have a power point slide that shows all this as a graphic but I can’t get to my ftp server to upload it at the moment. I will post an update with the slide as soon as I can.




Comments (11)

  1. Windows Mobile ISV - Developer says:

    It’s not true that a "developer can rely on the features being present and operating in the expected way." The problem is that MS expects WM to be a standard platform, but still allows the OEMs to modify the sources. If it’s meant to be a common experience like the desktop, why doesn’t MS ship OEMs just the binaries like they do with the desktop? My dev team spends more than 50% of its time working on device-specific issues exactly because MS does NOT enforce a standard WM OS image. The "paper definition of required functionality" is often laughably ignored", but the OEMs still claim to ship "Windows Mobile." Windows CE should be the platform if the device developer wants to roll its own, and WM should be a standard platform for a consistent consumer exeprience.

  2. WM OEM Engineer says:

    Actually, OEMs cannot modify the base WM image. There are logo tests that validate the OS components to ensure they have not changed from what MS released. If there is a mismatch, then the device does not recieve logo and therefore cannot be called a WM based device….

  3. Scott Arnold says:

    What about the early years of Windows CE?

    From what I can tell, the finished Microsoft OS running on early handheld devices was called "Windows CE". This seems to be true for Windows CE versions 1.0 (nov 1996), 2.0 (late 1997), and 3.0 (June 2000). Windows CE isn’t clearly a separate piece until Windows Mobile 2003 (June 2003). I’ve also found reference to a Windows CE 4.0 (March 2002) but have no idea what the OS was called that year.

    I could be wrong about alot of this, as I have never given PDAs any thought until just recently when I needed to do some research on them for work. I’m just going by various sources I’ve found on the web (many of which could be inaccurate or misleading).

    It’s all very confusing.

  4. Scott Arnold says:

    Note that I was limiting my scope to PDAs, which for the Microsoft inspired platform is the Pocket PC. However, before Windows CE 3.0 they were called "Palm-sized PCs", and I am uncertain as to whether these would be considered PDAs.

  5. Ce billet de Marcus complte merveille le billet prcdent publi sur smartnaute et intitul "Dcouvrez l’histoire de Windows Mobile, des annes 90 au futur Magneto".

  6. marcpe says:

    I have posted my answers to these comments here:


  7. Neelam says:

    I am new to this site. But after going through this i found it useful and thought of posting my query here.

    I am currently working on Image Update feature provided by Windoes Mobile. Has anybody tried applying packages to the WM OS image? I tried that by writing the package name in the menifest file (pkgs.lst) along with the image name. The image gets downloaded to the NAND Flash on the device but package copying gives me error.

    Please let me know if somebody has any experience with packages.

  8. zfyhhp says:

    Windows Mobile开发工具介绍

Skip to main content