Chapter 9. Desktop Synchronization

That's okay, I don't know what synchronize means anyway.

?Gonzo, Muppet Babies

Up until this point, we have discussed the various communication technologies that are available to you when developing applications that run directly on a Pocket PC device. Although the Pocket PC can be used as a great stand-alone mobile device, it was actually designed to be a portable companion to your desktop computer. By establishing a partnership with your desktop using ActiveSync (which every device comes with), you can enable your Pocket PC to replicate and synchronize files, e-mail messages, appointments, and contacts, convert files between device and desktop formats, and even execute functions from the PC that will run remotely on your Pocket PC.

This chapter describes how ActiveSync controls and manages the synchronization process between data on the desktop and a partnered device. It covers several different topics that deal with specific aspects of a desktop-device partnership, including the following:

  • How the Remote API (RAPI) enables a desktop application to execute a function on a connected Pocket PC device (this is similar to a remote procedure call). RAPI is typically used when a desktop application needs to manage or get information from a connected device, such as a listing of its files.

  • How device profiles are managed using the CEUtil functions. CEUtil is a set of APIs that enables a desktop application to query the ActiveSync Manager for device information, such as specific synchronization settings or platform information for a previously established partner device.

  • How to create file filters. File filters are components that plug into the desktop side of ActiveSync, and are used to convert files as they are sent back and forth between the desktop and a Pocket PC device.

  • How to write ActiveSync Synchronization Service Providers (SSPs). SSPs are custom components residing on both the desktop and a Pocket PC device that handle data synchronization, replication, and conflict management for specific data objects.

  • How both the Pocket PC and the desktop use notifications to alert an application when a connection has been established or when the synchronization process has either started or finished.

Before we dive deeper into developing synchronization components and using the various replication APIs, let's first take a look at how the ActiveSync Manager coordinates and manages all of the connectivity services, service providers, and helper DLLs that are used in the synchronization process.