PlaysForSure portable media players are not automatically upgraded to MTP when you install third-party media device applications (914087)



The information in this article applies to:

  • Microsoft Windows Media Format 9.5 SDK
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition

SYMPTOMS

Some PlaysForSure portable media players are installed as storage volumes and are not automatically upgraded to the Media Transfer Protocol (MTP) protocol when you install third-party media device applications. However, the device applications are automatically upgraded to MTP when Microsoft Windows Media Player 10 is installed.

CAUSE

Some MTP devices are implemented as dual-mode devices. These devices are automatically installed with MTP drivers if the devices are found on the computer. Otherwise, these devices are installed as Mass Storage Class (MSC) storage volumes. However, these devices that are installed as MSC storage volumes will work automatically, but the devices will not be able to copy or to play Windows Media Rights Manager 10 subscription content. Media devices must use MTP to copy or to play Windows Media Rights Manager 10 subscription content.

Microsoft Windows does not automatically upgrade device drivers when preferred drivers become available. Users must manually install new drivers. Additionally, applications may install the preferred drivers during setup.

RESOLUTION

To resolve this problem, manually upgrade the dual-mode device to MTP. Or, enable automatic dual-mode device driver upgrades when you set up an application.

Manually upgrade the dual-mode device to MTP

To manually upgrade a specific dual-mode device to MTP, you must first uninstall the device by using Device Manager. After you uninstall the device, you can click Scan for new devices on the Action menu in Device Manager.

Enable automatic driver upgrades for dual-mode devices

Applications may support automatic dual-mode device driver upgrades by implementing device migration support in their setup packages. The Wpd_ci.dll file is the Windows Portable Devices class installer. This installer supports two functions that can be used to upgrade drivers on dual-mode devices:
  • The RescanBus() function will trigger a scan for new devices.
  • The MigrateMTPDevicesInstalledAsMSC() function can search for dual-mode devices that are installed as MSC storage volumes. Depending on the option that you select, the function will return a count of the devices, perform the uninstall operation, or perform an automatic rescan.
There is no static library in Windows Media Format software development kit (SDK) 9.5 that supports these functions. You must retrieve the address for these functions by using the GetProcAddress() function. For more information about the GetProcAddress() function, visit the following Microsoft Developer Network (MSDN) Web site: You can call the MigrateMTPDevicesInstalledAsMSC() function by using flags. The following is the function prototype:

MigrateMTPDevicesInstalledAsMSC(IN BOOL fRemove, IN BOOL fRescan, OUT UINT* pcRemoved)


These flags have the following effect on the behavior of the function.
fRemove fRescanResult
TTThe flag uninstalls all MTPInstalledAsMSC devices and then rescans the bus to reinstall all USB devices. If the pcRemoved value is non-NULL, the flag returns the number of devices that were migrated.
TFThe flag uninstalls all MTPInstalledAsMSC devices but defers the rescan until either the RescanBus() function or the MigrateMTPDevicesInstalledAsMSC(FALSE, FALSE, NULL) function is called. If the pcRemoved value is non-NULL, the flag returns the number of devices that were removed.
FTThis flag performs a rescan of the bus.
FFThis flag has no effect. If the pcRemoved value is non-NULL, the flag returns the number of devices that would be uninstalled if the fRemove flag were TRUE.
If fRemove = TRUE, the MigrateMTPDevicesInstalledAsMSC function uninstalls all dual-mode devices that are currently installed as MSC storage volumes. If fRescan = TRUE, the USB bus is immediately rescanned, and PlaysForSure devices that are connected are installed as MTP devices. If fRescan = FALSE, the rescan operation is delayed. The setup application may then look for a non-zero *pcRemoved result and explicitly call the RescanBus() function, accordingly.

Migration may be disabled for specific devices. To do so, create a "DisableMtpMigration" DWORD value as a registry device parameter that is set not equal to zero. By using this parameter DWORD value, device companies can selectively prevent their devices from being migrated.

Call the MigrateMTPDevicesInstalledAsMSC() function during application setup immediately after you install the Windows Format SDK redistributable components but before you start the UMWDF service.

STATUS

This behavior is by design.

Modification Type:MinorLast Reviewed:3/13/2006
Keywords:kbprb KB914087 kbAudDeveloper