About the Synchronization Engine

[The feature associated with this page, Windows Media Player SDK, is a legacy feature. It has been superseded by MediaPlayer. MediaPlayer has been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer instead of Windows Media Player SDK, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The synchronization engine is the component of Windows Media Player that manages copying digital media content to portable devices. Windows Media Player supports a single instance of the synchronization engine for each device. You must use a remoted instance of the Windows Media Player control to perform synchronization tasks programmatically. In effect, your program shares the synchronization engine instances with Windows Media Player and all other programs that use the Player interfaces for device synchronization.

You can use IWMPSyncDevice::start and IWMPSyncDevice::stop to control when the synchronization engine does its work. In most cases, you should not use these methods. Instead, you should let the synchronization engine schedule its work automatically. The start and stop methods exist so that you can use them if your program is designed to replace the Windows Media Player user interface. In this case, you might want to provide a start/stop button similar to the one Windows Media Player provides in the Devices tab.

You can monitor the synchronization progress for a device by polling IWMPSyncDevice::get_progress. This method retrieves a progress value for the entire synchronization process with a particular device. The value retrieved is a number that represents the percentage of synchronization complete. There are two events you can receive that are related to synchronization. The DeviceSyncError event notifies you when a problem occurs. The DeviceSyncStateChange event alerts you when the synchronization engine has changed state for the current device.

You can limit the amount of device storage that Windows Media Player uses for synchronization by calling IWMPSyncDevice2::setItemInfo with the PercentSpaceReserved attribute. Using this interface requires Windows Media Player 11.

About Device Synchronization

IWMPEvents2 Interface

Showing Synchronization Progress