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


Требования к приложениям DRM-Enabled Windows Media

Чтобы создать приложение windows Media Digital Rights Management (DRM), необходимо иметь заголовки и библиотеки, описанные в разделе Общие требования для разработки приложений этого документа. Кроме того, приложению потребуется указать дополнительные свойства в сведениях клиента при открытии устройства.

Два дополнительных свойства, необходимых для включения передачи содержимого с защитой DRM в Windows Media, описаны в следующей таблице.

Свойство Описание
WPD_CLIENT_WMDRM_APPLICATION_PRIVATE_KEY Указывает закрытый ключ приложения.
WPD_CLIENT_WMDRM_APPLICATION_CERTIFICATE Указывает сертификат приложения.

 

Эти свойства должны быть предоставлены в сведениях клиента приложения при открытии устройства с помощью метода IPortableDevice::Open. При указании этих свойств API WPD позволяет передавать защищенное содержимое. Если приложение предоставило сертификат и закрытый ключ, API создаст безопасный канал для передачи защищенного содержимого WMDRM на устройство.

Сведения о создании и распространении приложений под управлением Windows, поддерживающих DRM Windows Media, см. в разделе "Лицензирование приложений Windows".

Передача содержимого

Чтобы передать защищенное содержимое WMDRM, используйте IPortableDeviceContent::CreateObjectWithPropertiesAndData. Этот метод можно использовать как для защищенного, так и для очистки содержимого без дополнительных параметров. API WPD автоматически выбирает защищенный или чистый канал в зависимости от того, защищается ли содержимое или очищается. Он взаимодействует с поставщиком защищенного содержимого WMDRM для обработки лицензий WMDRM.

Передача известного содержимого очистки

Если вы включили приложение для обработки защищенного содержимого, но знаете, что определенный файл не защищен, можно сообщить WPD пропустить обработку DRM, установив параметр WPD_API_OPTION_USE_CLEAR_DATA_STREAM значение TRUE в входном IPortableDeviceValues при вызове IPortableDeviceContent::CreateObjectWithPropertiesAndData для четкого содержимого.

Доступ к операциям измерения с помощью IWMDRMDeviceApp

WPD предоставляет механизм доступа к API IWMDRMDeviceApp для обновлений лицензий и получения данных измерения. Чтобы получить доступ к этому API через WPD, вызовите QueryInterface на IID_IWMDRMDeviceApp из IStream, возвращенной из IPortableDeviceContent::CreateObjectWithPropertiesAndData. Этот экземпляр IWMDRMDeviceApp привязан к подключению IPortableDevice к устройству, совместимому с WMDRM, и не к определенному содержимому, в котором был получен IStream. WPD внутренне упаковывает API измерения и делает его доступным для приложения. Приложение должно использовать константу WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR для параметра IWMDMDevice* .

В следующем фрагменте кода показано это.

IStream*               pDataStream = NULL;

IWMDRMDeviceApp*       pWMDRMApp   = NULL;

  

// ... Initialization 

 

hr = pPortableDeviceContent->CreateObjectWithPropertiesAndData(pValues,

                              &pDataStream,

                              &dwOptimalWriteBufferSize,

                              NULL);

 

// ... Transfer the protected WMDRM content 

pDataStream->Write(pData, cbData, &cbWritten);

 

pDataStream->Commit(0);

 

hr = pDataStream->QueryInterface(IID_IWMDRMDeviceApp, 

                                 (void**)&pWMDRMApp);

 

if (SUCCEEDED(hr))

{

   DWORD dwStatus = 0;

 

   // Call metering operations on the current device using the WPD device pointer

   hr = pWMDRMApp->QueryDeviceStatus((IWMDMDevice *)WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR, 

                                     &dwStatus);

}

То же самое необходимое для закрытого ключа приложения и сертификата применяется здесь. Если ключ или сертификат недопустимый или если система WMDRM не инициализируется, вызов QueryInferface завершится ошибкой.

Приведенный выше метод получения интерфейса IWMDRMDeviceApp из указателя IStream является просто удобством, если приложение уже выполняет предварительную передачу защищенного содержимого, прежде чем продолжить выполнение операций измерения и синхронизации лицензий.

Наша рекомендация для большинства приложений, которым требуется доступ к IWMDRMDeviceApp, заключается в инициализации IWMDRMDeviceApp, так как это не требует от приложения передачи защищенного содержимого или удержания в интерфейсы передачи, чтобы выполнять синхронизацию измерения устройств и синхронизации лицензий. Для этого метода потребуется использование API Диспетчера устройств Windows Media (WMDM). Дополнительные сведения и пример кода см. в доступ к API WMDRM из приложения WPD на сайте WHDC.

переносимых устройств Windows