Windows Media Device Manager Device Extensions for Metadata Transfer

[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.]

To enable accelerated metadata transfer, manufacturers of devices that do not support MTP must do the following in source code:

  • Define WMP_WMDM_DEVICE_SUPPORT.
  • Include wmpdevices.h, which is installed as part of the Windows Media Player SDK.

Wmpdevices.h defines the following structures.

Structure Description
WMP_WMDM_METADATA_ROUND_TRIP_PC2DEVICE Structure used by Windows Media Player to request accelerated metadata synchronization information from portable devices that do not support MTP.
WMP_WMDM_METADATA_ROUND_TRIP_DEVICE2PC Structure used by Windows Media Player to receive accelerated metadata synchronization information from portable devices that do not support MTP.

 

To request information from the device about metadata that has changed, Windows Media Player 10 or later calls the Windows Media Device Manager method IWMDMDevice3::DeviceIoControl. When making this call, the Player follows specific steps, as follows:

  • The first parameter, dwIoControlCode, contains the constant IOCTL_WMP_METADATA_ROUND_TRIP. This constant is defined in wmpdevices.h.
  • The second parameter, lpInBuffer, points to a WMP_WMDM_METADATA_ROUND_TRIP_PC2DEVICE structure.
  • The third parameter, nInBufferSize, contains the size of the input buffer.
  • The fourth parameter, lpOutBuffer, points to a WMP_WMDM_METADATA_ROUND_TRIP_DEVICE2PC structure. The device must fill in this structure with information about changes.
  • The fifth parameter, pnOutBufferSize, receives the size of the output buffer.

Device Extensions for Accelerated Metadata Transfer