FAQ: CE 6.0 and Visual Studio 2005/2008

I seem to be getting quite a number of questions related to CE 6.0 and Visual Studio 2005/2008 – so here’s the story…

Developers building Windows CE based devices fall into one of two groups, you are either an operating system developer, or an application developer (and yes, you could be both).

1. Operating System Developer.

For the operating system developer, the CE 6.0 development tools are a plug in to Visual Studio 2005 – the Full CE 6.0 product ships with a full version of Visual Studio 2005 – The CE 6.0 development tool (Platform Builder) gives you the ability to configure, build, download, and debug your custom operating system image. Platform Builder also gives you the ability to write Win32 (C/C++) applications, or DLLs (where the DLL can export functions shared between applications, resource only DLLs, or the DLL could be a device driver in the operating system image).

Operating system developers need Visual Studio 2005, and the CE 6.0 development tools.

2. Application Developer.

Application developers typically don’t need access to the underlying operating system development tools, the application developer codes against a “platform”. For native code developers (Win32, MFC, *TL), this means that you code against a Windows CE Platform SDK – since you are a native code developer this means that you are calling the Win32 APIs on the operating system directly (MFC is a thin wrapper over Win32) – Since Windows CE is a componentized operating system the exact APIs exposed from a customized “platform” are determined by the embedded operating system developer.

Once a Windows CE configuration is complete, the embedded o/s developer builds a custom SDK (Software Development Kit) that defines the exposed APIs for that specific platform (through header files and libraries). This SDK can then be shared with application developers who install the SDK into Visual Studio 2005 and/or Visual Studio 2008.

The native code developer codes against the custom platform SDK.

Managed code developers have a slightly easier time – the .NET Compact Framework *defines* the underlying platform APIs, when you add the compact framework to a platform configuration a set of operating system dependencies automatically gets added to the platform – as a managed application developer you know that the .NET class libraries are there – if you want to escape the box (platform invoke) then you need to know which native code APIs exist for your specific platform.

Application developers can choose to develop using Visual Studio 2005 OR Visual Studio 2008.

– Mike

Comments (4)

  1. Miguel says:

    Thanks Mike, it was time me needing such a clear explanation 😉

    Don’t know what other readers think, but from my Windows Mobile experience, I think nowadays .NET Compact Framework is the right choice when developing application for Windows CE. Makes things far more easier for the programmer.


  2. Mike-

    Separation of ‘platform’ and ‘application‘ is fine with a couple of caveats to the application programmmer.  

    First power management.  If the device is running on batteries,  application programmers need to understand the platforms properties- things like reduced power and sleep modes; radio controls;  network behavior under low power states.  Not only that, the application programmers need to use event driven, not polling operations, use motion, animation and audio conservatively, use integer, floating point and other data types properly  and use other methods to make his system power conservative.  Most of all, the application programmer needs to understand and exploit event driven technologies like DPWS to get the most out of his device.  Good power aware software can use 1/10the  the power of ‘desktop’ code.  UGH- Fans, ugly ugly fans.  Keep them in the server room please.

    Second problem: leaks, counter rollover, mysterious pixies that take time to mature.  Embedded devices tend to run 24×365.  Few programmers really develop for this non-stop world.  For the managed code guys, this may not be too much of a problem,  But for the rest- this is the real issue.  Forget comp sy class-writing true leak-free code is a bitch.  Be careful!  Finding a leak that takes three months to choke a system, or a counter that rolls over every 47.123 days is not fun!


    PS: MVP Summit was great- wish you were there!

  3. dahem0n says:

    Thats mean that if i’m a Operating System Developer i need to use VS2005 plus CE 6.0 development tools? or can i use VS2008 plus CE 6.0 development tools?

  4. dahem0n says:

    That means… if i’m a Operating System Developer i need to use VS2005 plus CE 6.0 development tools? or can i use VS2008 plus CE 6.0 development tools?