| Interface and method |
Implementation option |
| IMDServiceProvider::EnumDevices |
Mandatory. |
| IMDServiceProvider::GetDeviceCount |
Mandatory. |
| IMDServiceProvider2::CreateDevice |
Optional. This method must be implemented for PnP and Windows Explorer support. |
| IMDSPDevice::EnumStorage |
Mandatory. |
| IMDSPDevice::GetDeviceIcon |
Mandatory. |
| IMDSPDevice::GetFormatSupport |
Mandatory. |
| IMDSPDevice::GetManufacturer |
Mandatory. |
| IMDSPDevice::GetName |
Mandatory. |
| IMDSPDevice::GetPowerSource |
Optional. |
| IMDSPDevice::GetSerialNumber |
Optional. For protected content transfer, Windows Media Device Manager uses IMDSPStorageGlobals::GetSerialNumber. |
| IMDSPDevice::GetStatus |
Mandatory. |
| IMDSPDevice::GetType |
Mandatory. |
| IMDSPDevice::GetVersion |
Optional. |
| IMDSPDevice::SendOpaqueCommand |
Optional. |
| IMDSPDevice2::GetCanonicalName |
Optional. |
| IMDSPDevice2::GetFormatSupport2 |
Mandatory. |
| IMDSPDevice2::GetSpecifyPropertyPages |
Optional. |
| IMDSPDevice2::GetStorage |
Optional. |
| IMDSPDeviceControl Interface |
Optional. |
| IMDSPEnumDevice::Clone |
Mandatory. |
| IMDSPEnumDevice::Next |
Mandatory. |
| IMDSPEnumDevice::Reset |
Mandatory. |
| IMDSPEnumDevice::Skip |
Mandatory. |
| IMDSPEnumStorage::Clone |
Mandatory. |
| IMDSPEnumStorage::Next |
Mandatory. |
| IMDSPEnumStorage::Reset |
Mandatory. |
| IMDSPEnumStorage::Skip |
Mandatory. |
| IMDSPObject::Close |
Mandatory. |
| IMDSPObject::Delete |
Mandatory. |
| IMDSPObject::Move |
Optional. |
| IMDSPObject::Open |
Mandatory. |
| IMDSPObject::Read |
Mandatory (if Windows Media Player support is desired). |
| IMDSPObject::Rename |
Optional. |
| IMDSPObject::Seek |
Optional. |
| IMDSPObject::Write |
Mandatory. |
| IMDSPObjectInfo Interface |
Optional. |
| IMDSPRevoked Interface |
Optional. |
| IMDSPStorage::CreateStorage |
Mandatory only if dwAttributes is WMDM_FILE_ATTR_FILE. |
| IMDSPStorage::EnumStorage |
Mandatory. |
| IMDSPStorage::GetAttributes |
Mandatory. |
| IMDSPStorage::GetDate |
Mandatory. |
| IMDSPStorage::GetName |
Mandatory. |
| IMDSPStorage::GetRights |
Optional. |
| IMDSPStorage::GetSize |
Mandatory. |
| IMDSPStorage::GetStorageGlobals |
Mandatory. |
| IMDSPStorage::SendOpaqueCommands |
Optional. |
| IMDSPStorage::SetAttributes |
Optional. |
| IMDSPStorage2::CreateStorage2 |
Mandatory. |
| IMDSPStorage2::GetAttributes2 |
Mandatory. |
| IMDSPStorage2::GetStorage |
Optional. |
| IMDSPStorage2::SetAttributes2 |
Optional. |
| IMDSPStorage3 Interface |
Optional. However, if the device parameter UseMetadataViews is set to 1, this interface must be implemented, and IMDSPStorage3::GetMetadata becomes mandatory, although IMDSPStorage3::SetMetadata is still optional. |
| IMDSPStorageGlobals::GetCapabilities |
Mandatory. |
| IMDSPStorageGlobals::GetDevice |
Mandatory. |
| IMDSPStorageGlobals::GetRootStorage |
Mandatory. |
| IMDSPStorageGlobals::GetSerialNumber |
Mandatory for PDDRM only. Optional otherwise. |
| IMDSPStorageGlobals::GetStatus |
Mandatory. |
| IMDSPStorageGlobals::GetTotalBad |
Mandatory. |
| IMDSPStorageGlobals::GetTotalFree |
Mandatory. |
| IMDSPStorageGlobals::GetTotalSize |
Mandatory. |
| IMDSPStorageGlobals::Initialize |
Optional. This method should be implemented if the device supports this functionality. If this method is not implemented, IMDSPStorageGlobals::GetCapabilites must return WMDM_STORAGECAP_NOT_INITIALIZABLE in addition to any other flags. |
| IMDSPDevice3
IMDSPObject2
IMDSPStorage4 |
Required to support automatic synchronization with Windows Media Player |