Platform SDK: Exchange Server

How the Sample Works

A complete description of how to go about creating Microsoft Visual Studio 6.0 application wizards is beyond the scope of this document. Interested readers can find information about this procedure in the Microsoft Developer's Network CD that accompanies the Microsoft Visual Studio product. Suffice it to say that both of the included wizards are specialized versions of the standard MFC and Windows NT service application wizards. In both cases, a MAPI session is used to retrieve folder information from Exchange Server, and then extra framework code that performs ICS synchronization with the Exchange information store is included, along with the standard MFC or NT service code.

Working with Generated Code and ICS

Incremental Change Synchronization (ICS) is an extremely efficient way for an application to periodically be advised of changes that occur within an information store folder. Rather than always rescanning a folder and its contained hierarchy of subfolders, ICS allows you to receive only the changes that have occurred. After you have selected the folders you desire to monitor using the wizard, and have finished creating the project, you then go about adding code that can use the ICS data to do useful things, such as notify the user when new items arrive, or are deleted, and so on. ICS centers around a synchronizer/collector model for two stores. The synchronizer on one store, when directed, collects the changes that have occurred for its store, and the collector for the second store retrieves these changes from the synchronizer. In this way, change information periodically flows from one store to another, keeping the second (retrieving) store updated. Agents (that these wizards help the user create) schedule synchronization from a source store to a receiving store and provide for the coordination required for this process. The COM interfaces IExchangeExportChanges, IExchangeImportContentsChanges, and the IExchangeImportHierarchyChanges are implemented by store collectors and synchronizers for the purpose of ICS. The reader is directed to the topic About Incremental Change Synchronization for a general discussion of ICS and these interfaces.