Windows Mobile and Windows Embedded CE – what’s the difference ?

A very common question that perhaps needs some explanation is the difference between Windows Mobile 5.0 and Windows Embedded CE 6.0 - so here's the explanation.

Windows Embedded CE is a hard real-time, componentized operating system that can be used by developers to build a wide range of embedded devices - you can think of the operating system as a box of Lego blocks, with CE 6.0 there are approximately 700 components (or Lego blocks) that make up the operating system, a developer gets to pick and choose which components or technologies they put into their embedded operating system design - the operating system could be built as a kernel only image which would boot with a ~300kb operating system image, the developer can also choose to include a web server, web browser, media player, networking, .NET Compact Framework, or a host of other operating system technologies, each of which will of course increase the size of the operating system image. Devices can be based on a range of processor architectures (ARM, MIPS, x86 or SH4) and can be headless or expose some form of user interface. The choice of operating system features also determines the application development APIs that are exposed from the device - this means that each CE based embedded device could expose a completely different set of components/technologies and therefore APIs to an application developer (and in many cases devices are closed, so there isn't a 3rd party developer story).

Windows CE gets released to two sets of customers, the general embedded developer (who builds cow milking machines, sewing machines, industrial robots, set top boxes, and a range of other cool devices) and "Microsoft internal" customers (Windows Automotive, Windows Mobile, others).

The Windows Mobile team choose their own specific set of Lego blocks (operating system components), add their custom shell, applications (like Office Mobile), and device specific technologies (like the connection manager for example) - the result is a uniform set of operating system technologies, applications, shell and APIs that are consistent across all Windows Mobile devices - this means that an application written for one Windows Mobile smartphone (or Pocket PC) should run across all Windows Mobile devices (just check out the list of Windows Mobile applications available on Handango). Windows Mobile OEMs don't have the ability to customize the underlying operating system/technologies because that would modify the exposed APIs on the platform, but do have the ability to add their own specific applications/services to the Windows Mobile device image (today screen plug-ins, applications like VoIP, games, or others) - this also means that it's not easy to put Windows Mobile devices into "kiosk mode".

You are probably wondering why I said that application "should" run across all Windows Mobile devices - while it's true that the underlying operating system technologies and APIs are consistent across Windows Mobile devices there are also some differences that application developers may not take into account, for example screen resolution or orientation.



Windows Embedded CE

Windows Mobile


ARM, MIPS, x86, SH4








Consistent API



Licensed by




So, what else... There is a major difference in the underlying operating system architecture for Windows Mobile 5.0 and Windows Embedded CE 6.0 - Windows Mobile 5.0 is based on the CE 5.0 kernel/architecture - the memory architecture for CE 1.0 through CE 5.0 limits the operating system to running a maximum of 32 processes and each process runs in a 32MB virtual address space - the CE 6.0 release now allows for up to 32,768 processes running at one time, and each process gets a 2GB Virtual Address space to run in. Note tha 32,768 processes is a theoretical limit, the kernel has a 64k handle store, each process starts with at least two handles, so 64k handles divided by two handles equals 32k (32,768) processes - of course a typical application would use more than two handles so the actual number of supported processes is less then 32k, but certainly could be in the hundreds/thousands (can you think of an embedded solution that needs hundreds of processes running?).

- Mike

Comments (22)
  1. Mahesh Kasar says:

    Hi Mike,

    Nice article. I was always facing this question. Always people get confuse thinking that both are one and the same. But are different.


  2. For those who are wondering what is the difference between Windows Mobile and Windows CE , check out

  3. guerrgab says:

    Hi Mike,

    just a quick question (two actually):

    1)Is DirectX9c supported in XPSP2Embedded? (I’m about to start writting an application and I’d like to know if I will be able to deploy it on XP embedded).

    2) Does CE6.0 support Directx9c ?

    Thanks a lot for your time and patience with my basic questions,

    very best

    ps: it’ll be for x86 cpu board.

  4. A topic that comes up very often in the CE courses is "what is the difference between Windows CE

  5. mikehall says:

    DirectX 9.0c is supported on Windows XP Embedded (it’s one of the components in the XP Embedded component tree).

    Windows CE supports DirectX closer to the DirectX 8 level, with some CE specific technologies.

    – Mike

  6. bose says:

    So does it mean that it is not possible to add an intermediate NDIS driver to windows mobile kernel? In Wince the same is possible!

  7. mikehall says:

    Windows Mobile does allow applications and drivers to be added to an existing device (they will need to be appropriately signed) – there are a number of 3rd party hardware components supported by Windows Mobile.

    An OEM doesn’t have the ability to add/remove any of the underlying operating system components to a Windows Mobile device image, for example not having the ability to remove the media player or internet browser or removing the networking stack.

    – Mike

  8. Esta é uma questão que é levantada com frequência, e que já foi abordada por diversas vezes em blogs

  9. Mark says:

    Why is the clsid {6bf52a52-394a-11d3-b153-00c04f79faa6} defined on the Windows Mobile 5 OS but not on Windows Embedded CE 5 OS? This is the clsid for media player.

  10. Alexey says:

    Thank you for this article. You mentioned that "Windows Embedded CE is a hard real-time". Can you say something about real-timeness of Win Mobile 5.0 and Crossbow?

  11. Mike says:

    Windows Mobile 5.0 and Windows Mobile 6 are both based on the Windows CE 5.0 operating system kernel, this means that the underlying operating system is real-time. Real-time refers to the ability of an operating system to respond within a known timeframe to hardware interrupts. A real-time device is made up of components that include the hardware, drivers and interrupt handlers, the operating system and applications – of course an application developer can write bad code that doesn’t respond to user input in a timely manner, but that doesn’t change the underlying real-time kernel of the o/s.

    – Mike

  12. Continuing the series of What’s the difference (CE 6.0 and Windows Mobile) – I got some questions from

  13. Ravish Saggar says:

    How to develope/get os image for a new mobile device.

  14. Oregon says:


    <a href= thanks for sharing ></a>   [url=thanks for sharing][/url]  

  15. Bredd says:


    <a href= 3e755350bc0152c9d43ad7df4fedf4cf

    ></a>   [url=3e755350bc0152c9d43ad7df4fedf4cf


  16. Zerita says:


    <a href= 3e755350bc0152c9d43ad7df4fedf4cf

    ></a>   [url=3e755350bc0152c9d43ad7df4fedf4cf


  17. shark2076 says:


  18. If you have ever heard one of my talks on Windows Mobile development, you may remember me ranting a bit

  19. I want to point out some learning&#8217;s that I experienced recently after being challenged by a customer

  20. Warren Tang says:


    WindowsMobileisbasedonWindowsEmbeddedCE WindowsEm…

  21. Windows Mobile and Windows Embedded CE – what’s the difference

Comments are closed.

Skip to main content