This post will compare WPD and the latest version of Windows Media Device Manager (WMDM), from an application developer's point of view.
Availability (aka SDK and Runtime Requirements)
The Windows SDK contains the complete build environment (headers, libs, sample code ...) for developing a WPD application for both 32 and 64-bit.
The Windows Media Format 11 SDK (WMFSDK11) provides headers and libs for WMDM 11. Since WMFSDK11 is released in 32-bit, only 32-bit WMDM applications can be built. On 64-bit Windows, a 32-bit WMDM application will run in SysWOW mode.
Common Device-level Operations
Both WPD and WMDM support basic device-level operations: enumeration of connected devices, managing device-level properties, and querying of static device capabilities.
WMDM's IWMDMDeviceControl operations internally delegate to the service provider (through IMDSPDeviceControl), and would require the service provider to support these operations. While device playback control is not natively supported by the WPD API, WPD's extensibility mechanism makes it easy to add this as a custom command to your driver. For example, your WPD driver can support a custom Playback command that your application can invoke using IPortableDevice::SendCommand.
Retrieve device properties
Common Object-level Operations
A WPD object is analogous to a WMDM storage, and most WMDM storage operations have their equivalent WPD API. WPD is ObjectID-based, so each interface method that supports object-level operations receives an Object Identifier as a parameter. WMDM is interface-based, IWMDMStorage represents a storage or a file, and IWMDMStorageControl implements the operations on a storage or a file.
For data object creation, both WPD and WMDM support transfer of protected Windows Media Digital Rights Management (WMDRM) content.
There are only 4 events that WMDM applications can receive: media arrival/removal, and device arrival/removal. WPD supports device-level and the more granular object-level events, plus built-in extensibility for custom events.
Monitor device arrival
Both WPD and WMDM provide some extensibility mechanism for sending device-specific commands. IWMDMDevice3::DeviceIoControl is used for packaging and sending commands only to Media Transfer Protocol (MTP) portable media players.
WPD API methods that map to Command GUIDs internally delegate to IPortableDevice::SendCommand. Applications can invoke these commands with additional options or parameters, such as the use of Read or Write IOCTLs for access control.
In addition, for better performance, WPD supports batching of property writes and retrievals across multiple objects, either per format or using a list of Object Identifiers.
WMDM loads registered service providers (SPs) within the same process as the application. Any crash or instability in the device driver or SP could cause undue crashes in the application process, or worse, trigger bluescreens if kernel mode drivers are involved.
WPD drivers are sandboxed in the User Mode Driver Framework (UMDF) host process, and gain the stability and security benefits of a UMDF driver. If a WPD driver crashes, only the sandbox process will be affected; the WPD application process is isolated from the driver instability. In a similar way, a WPD driver's process is not affected when a WPD client application crashes.
WPD and WMDM have a lot of overlap in terms of the device operations that each enables. WMDM is geared specifically towards portable media player applications and scenarios, with media-centric metadata schema, support for device playback control, and direct access to Windows Media Digital Rights Management (WMDRM) application interfaces. WPD supports much of what WMDM does (including WMDRM transfers), plus many key advantages over WMDM, including stability, UMDF integration, comprehensive property and content type schema (beyond portable media devices), extensibility for custom device solutions, broader device support, and not to mention, great development tools.
For applications that would like to connect to, control, and manage content across a wide range of devices (digital still cameras, portable media players, cellular phones, third-party device classes, and more), WPD is the clear choice.
This posting is provided "AS IS" with no warranties and confers no rights.