Requisitos para aplicaciones de Windows Media DRM-Enabled
Para crear una aplicación habilitada para Windows Media Digital Rights Management (DRM), debe tener los encabezados y bibliotecas descritos en la sección Requisitos generales para el desarrollo de aplicaciones de este documento. Además, la aplicación deberá proporcionar propiedades adicionales en la información del cliente al abrir el dispositivo.
Las dos propiedades adicionales necesarias para habilitar las transferencias de contenido protegidas con DRM de Windows Media se describen en la tabla siguiente.
Propiedad | Descripción |
---|---|
WPD_CLIENT_WMDRM_APPLICATION_PRIVATE_KEY | Especifica la clave privada de la aplicación. |
WPD_CLIENT_WMDRM_APPLICATION_CERTIFICATE | Especifica el certificado de la aplicación. |
Estas propiedades se deben proporcionar en la información de cliente de la aplicación cuando el dispositivo se abre con el método IPortableDevice::Open . Cuando se proporcionan estas propiedades, la API de WPD permite transferencias de contenido protegidas. Si la aplicación ha proporcionado un certificado y una clave privada, la API creará un canal seguro para transferir contenido WMDRM protegido al dispositivo.
Para obtener información sobre cómo crear y distribuir aplicaciones basadas en Windows que admiten DRM de Windows Media, vea "Licencias de aplicaciones basadas en Windows".
Transferencia de contenido
Para transferir contenido protegido con WMDRM, use IPortableDeviceContent::CreateObjectWithPropertiesAndData. Este método se puede usar para contenido protegido y no cifrado sin opciones adicionales. La API de WPD seleccionará automáticamente el canal protegido o borrará en función de si el contenido está protegido o no. Interactúa con el proveedor de contenido seguro WMDRM para procesar las licencias WMDRM.
Transferencia de contenido claro conocido
Si ha habilitado la aplicación para controlar el contenido protegido, pero sabe que un archivo específico no está protegido, puede indicar a WPD que omita el procesamiento de DRM estableciendo WPD_API_OPTION_USE_CLEAR_DATA_STREAM opción en TRUE en la entrada IPortableDeviceValues al llamar a IPortableDeviceContent::CreateObjectWithPropertiesAndData para borrar el contenido.
Acceso a operaciones de medición mediante IWMDRMDeviceApp
WPD proporciona un mecanismo para acceder a las API IWMDRMDeviceApp para las actualizaciones de licencias y la recuperación de datos de medición. Para acceder a esta API a través de WPD, llame a QueryInterface en IID_IWMDRMDeviceApp desde el IStream devuelto desde IPortableDeviceContent::CreateObjectWithPropertiesAndData. Esta instancia de IWMDRMDeviceApp vinculada a la conexión IPortableDevice al dispositivo compatible con WMDRM y no al contenido específico en el que se obtuvo el IStream . WPD ajusta internamente las API de medición y hace que sea accesible para la aplicación. La aplicación debe usar la constante WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR para el parámetro IWMDMDevice*.
En el fragmento de código siguiente se muestra esto.
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);
}
Aquí también se aplica el mismo requisito previo con la clave privada de la aplicación y el certificado. Si la clave o el certificado no son válidos o si el sistema WMDRM no se inicializa, se producirá un error en la llamada a QueryInferface .
El método anterior para adquirir la interfaz IWMDRMDeviceApp desde el puntero IStream es solo una comodidad si la aplicación ya está realizando una transferencia de contenido protegida anterior, antes de continuar para realizar operaciones de medición y sincronización de licencias.
Nuestra recomendación para la mayoría de las aplicaciones que necesitan acceder a IWMDRMDeviceApp es inicializar IWMDRMDeviceApp directamente, ya que esto no requiere que la aplicación transfiera contenido protegido o mantenga en espera las interfaces de transferencia para realizar la medición de dispositivos y la sincronización de licencias. Este método requerirá el uso de las API de windows Media Administrador de dispositivos (WMDM). Para obtener más información y código de ejemplo, consulte las notas del producto Acceso a las API WMDRM desde una aplicación WPD en el sitio de WHDC.
Temas relacionados