Поделиться через


Обязательные и необязательные интерфейсы

В следующей таблице описаны обязательные и необязательные интерфейсы и методы для реализации поставщиками услуг. Должны быть реализованы все интерфейсы с одним или несколькими обязательными методами. Обязательный метод не может возвращать WMDM_E_NOTSUPPORTED или E_NOTIMPL.

Интерфейс и метод Вариант реализации
IMDServiceProvider::EnumDevices Mandatory.
IMDServiceProvider::GetDeviceCount Mandatory.
IMDServiceProvider2::CreateDevice Необязательный элемент. Этот метод должен быть реализован для поддержки PnP и Windows Обозреватель.
IMDSPDevice::EnumStorage Mandatory.
IMDSPDevice::GetDeviceIcon Mandatory.
IMDSPDevice::GetFormatSupport Mandatory.
IMDSPDevice::GetManufacturer Mandatory.
IMDSPDevice::GetName Mandatory.
IMDSPDevice::GetPowerSource Необязательный элемент.
IMDSPDevice::GetSerialNumber Необязательный элемент. Для передачи защищенного содержимого диспетчер устройств Windows Media использует IMDSPStorageGlobals::GetSerialNumber.
IMDSPDevice::GetStatus Mandatory.
IMDSPDevice::GetType Mandatory.
IMDSPDevice::GetVersion Необязательный элемент.
IMDSPDevice::SendOpaqueCommand Необязательный элемент.
IMDSPDevice2::GetCanonicalName Необязательный элемент.
IMDSPDevice2::GetFormatSupport2 Mandatory.
IMDSPDevice2::GetSpecifyPropertyPages Необязательный элемент.
IMDSPDevice2::GetStorage Необязательный элемент.
Интерфейс IMDSPDeviceControl Необязательный элемент.
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::D elete Mandatory.
IMDSPObject::Move Необязательный элемент.
IMDSPObject::Open Mandatory.
IMDSPObject::Read Обязательный (при необходимости поддержки Медиаплеер Windows).
IMDSPObject::Rename Необязательный элемент.
IMDSPObject::Seek Необязательный элемент.
IMDSPObject::Write Mandatory.
Интерфейс IMDSPObjectInfo Необязательный элемент.
Интерфейс IMDSPRevoked Необязательный элемент.
IMDSPStorage::CreateStorage Обязательно, только если параметр dwAttributes WMDM_FILE_ATTR_FILE.
IMDSPStorage::EnumStorage Mandatory.
IMDSPStorage::GetAttributes Mandatory.
IMDSPStorage::GetDate Mandatory.
IMDSPStorage::GetName Mandatory.
IMDSPStorage::GetRights Необязательный элемент.
IMDSPStorage::GetSize Mandatory.
IMDSPStorage::GetStorageGlobals Mandatory.
IMDSPStorage::SendOpaqueCommands Необязательный элемент.
IMDSPStorage::SetAttributes Необязательный элемент.
IMDSPStorage2::CreateStorage2 Mandatory.
IMDSPStorage2::GetAttributes2 Mandatory.
IMDSPStorage2::GetStorage Необязательный элемент.
IMDSPStorage2::SetAttributes2 Необязательный элемент.
Интерфейс IMDSPStorage3 Необязательный элемент. Однако если параметру устройства UseMetadataViews присвоено значение 1, этот интерфейс необходимо реализовать, и IMDSPStorage3::GetMetadata становится обязательным, хотя IMDSPStorage3::SetMetadata по-прежнему является необязательным.
IMDSPStorageGlobals::GetCapabilities Mandatory.
IMDSPStorageGlobals::GetDevice Mandatory.
IMDSPStorageGlobals::GetRootStorage Mandatory.
IMDSPStorageGlobals::GetSerialNumber Обязательный только для PDDRM. В противном случае необязательно.
IMDSPStorageGlobals::GetStatus Mandatory.
IMDSPStorageGlobals::GetTotalBad Mandatory.
IMDSPStorageGlobals::GetTotalFree Mandatory.
IMDSPStorageGlobals::GetTotalSize Mandatory.
IMDSPStorageGlobals::Initialize Необязательный элемент. Этот метод следует реализовать, если устройство поддерживает эту функцию. Если этот метод не реализован, IMDSPStorageGlobals::GetCapabilites должен возвращать WMDM_STORAGECAP_NOT_INITIALIZABLE в дополнение к любым другим флагам.
IMDSPDevice3IMDSPObject2
IMDSPStorage4
Требуется для поддержки автоматической синхронизации с Медиаплеер Windows

Создание поставщика услуг