Hall points out that Windows Vista and Windows Mobile both expose a well-defined API that doesn't change from one machine to another. For example, an application written for Windows Mobile will run on any Windows Mobile device, provided that issues of screen size and orientation have been addressed.
The situation differs, however, with Windows CE, which is a componentized OS that can be customized for specific devices. Thus, the API set available on a given device may not match the requirements of a specific application. Hall discusses a couple of approaches to resolving this dilemma.
Read Hall's interesting article here:
Will my application run on Windows CE?
Related stories: