Требования к приложениям 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.
Связанные разделы