If you have to choose between a device running Windows Mobile and a similar device running Windows CE, the other factor you must consider is the availability of application programming interfaces (APIs) on each platform. The most obvious difference is that on Windows Mobile 5.0 and later you have access to additional managed code libraries that are not available on Windows CE; these libraries make it easier to interact with the platform. For example, the Microsoft.WindowsMobile.Status namespace contains classes you use to query system status for many different items, such as the current active network connection and Internet Protocol (IP) address, battery power, screen orientation, phone status, media player information, or whether the device is cradled. You can also register to receive notifications when a system status changes. Also, you can use classes in the Microsoft.WindowsMobile. PocketOutlook namespace to query and set Microsoft Office Outlook Mobile data on tasks, appointments, and e-mail. You can use other libraries to access hardware on the device such as the phone, a Global Positioning System (GPS) receiver, or a camera.
Of course, whenever possible managed code developers call APIs only in managed libraries, but sooner or later, every managed code application developer has to resort to Platform Invocation Services (PInvoke) calls to native APIs to access functions that are available on the platform but not through managed APIs. Having a broad understanding of features available in native APIs on Windows Mobile that are missing from Windows CE can help you choose between platforms. To access a native API, you must use PInvoke to call functions in native APIs that effectively do all the hard PInvoke work for you.
There are too many differences in native APIs to describe them all here. To get an understanding of which native APIs are available on Windows Mobile that are not in the underlying Windows CE platform, study the documentation that comes with the Windows Mobile SDKs.

Recent Comments