Tuesday 29 June 2004

Are Pocket PC and Windows CE the same thing?

This is a FAQ on almost every Pocket PC and/or Windows CE development site and forum. This time I found the question on www.pocketpcdn.com.

Windows CE (.NET if a 4.x version, version 5.0 loses the .NET and is just Windows CE again) is a collection of pieces of an operating system, referred to as components. Each component is identified as belonging to Windows CE of a particular version and many of them are specifically written for Windows CE. An OEM, another third-party, or Microsoft themselves, can define a platform - a specific selection of those components to run on a particular device or compatible devices. A platform is a specialisation of the general set of components. Some of the components build on top of each other, others are completely independent, and others are mutually exclusive (e.g. you can only have one of the COM or DCOM runtimes).

Pocket PC is a platform defined by Microsoft; the 2000 and 2002 versions are based (loosely!) on Windows CE 3.0 while the 2003 versions are based on CE 4.2. Any OEM willing to license the software platform from Microsoft can do so, but must satisfy certain constraints (I believe) on screen size, application keys, and third-party components.

The tool for building your own platform comes in the Windows CE box and is called Platform Builder. You can find some videos demonstrating Platform Builder for Windows CE 5.0 at Channel 9. CE 5.0 will be released soon with a new Pocket PC version to follow later in the year, we believe. Once you've designed, built, and shipped your platform, you can generate an SDK from Platform Builder for use with (currently) eVC 4.0. A platform build consists of both compiling some components from source and linking other binaries together from supplied object libraries.

So, while Pocket PC includes many Windows CE components, some components of Pocket PC - notably the shell and messaging applications - are only available on that platform. It's possible to write programs which are source-compatible between Pocket PC and other Windows CE-based platforms, and even binary compatible, if you stick to components which are available on both platforms. So I guess the answer is really yes and no.

Saturday 19 June 2004

Windows Driver Foundation

Microsoft have decided to do something about the relative instability of Windows device drivers. They are, by all accounts, very hard to write.

Introduction to the Windows Driver Foundation

Interesting point: the Kernel-Mode Driver Framework will be supported in Windows 2000 and later (i.e. a lot of it will be compiled into/linked into the driver binary). I also see that USB device drivers will be moving into user-mode for Longhorn.

I recently had to update a CE device's OS image using a special download program and the device's Initial Program Loader, over a USB connection. The device required a special driver - which promptly crashed my PC (with a KMODE_EXCEPTION_NOT_HANDLED fault). I suspect a possible incompatibility with XP SP1 with the MS04-011 patch. Using an unpatched Windows 2000 SP4 box worked. Of course, I couldn't use Virtual PC, because it doesn't virtualise USB controllers, hubs or devices.

Tuesday 15 June 2004

I can hear that cable!

Science and Subjectivism in Audio

A nice link posted to the comments of Tony Schreiner's post Breaking-in Electronics.

When working in Ents you got the occasional person who was fully willing to accept that there was no need for special cables in live audio mixing and power amplification - but was fully kitted out at home. I guess that PA equipment doesn't require that level of quality (?!)

Thursday 10 June 2004

The randomly-occurring bug

Rick Schaut, a developer on Mac Office, has posted a couple of articles about the biology of a difficult-to-reproduce software bug. Interesting reading.

Anatomy of a Software Bug

Repro, Man

Tuesday 8 June 2004

What's it called, again?

As I think I've mentioned before, I've become the Exchange administrator at work. To understand what's going on better, and to keep up with developments, I've subscribed to Microsoft's Exchange Team blog (aka You Had Me At EHLO, a terrible pun).

Yesterday's entry covers installing the administrative tools (Exchange Manager and the Exchange Tasks for the Active Directory Users and Computers snap-in) on a server that doesn't have Exchange installed. The thing that caught my eye is that the entry is inconsistent about the naming of Windows Server 2003 - referring to it as both ".NET Windows" and "Windows 2003 Server".

Make your minds up!

Something that makes me a little uneasy is that the admin tools install a new service 'Microsoft Exchange Management.' Why??