Identificadores de contenido y derechos de contenido

Un identificador de contenido (identificador) es un valor ULONG que el controlador del sistema DRMK genera en tiempo de ejecución para identificar el contenido protegido por DRM en el flujo de datos de audio que se alimenta en un pin determinado.

Los derechos de contenido son una representación digital de los derechos concedidos por el proveedor de contenido al usuario para reproducir y copiar contenido protegido por DRM. Los derechos de contenido se especifican en forma de una estructura DRMRIGHTS que DRMK pasa al controlador de audio.

DRMRIGHTS contiene dos marcas: DigitalOutputDisable y CopyProtect. Si se establece la marca DigitalOutputDisable , el controlador debe deshabilitar las salidas digitales que se conecten a dispositivos externos (a través de un conector S/PDIF, por ejemplo). Si se establece la marca CopyProtect , el controlador debe deshabilitar las características que podrían permitir que una copia persistente del contenido seguro se guarde en el disco o en cualquier otra forma de almacenamiento no volátil. Por ejemplo, el hardware de audio típico permite enrutar una señal de reproducción a través del canal de captura. Si esta señal está en forma digital, la señal capturada puede ser una copia digital perfecta de la señal de entrada. Si la combinación de reproducción contiene datos de cualquier secuencia que tenga establecida una marca CopyProtect , el controlador debe silenciar la ruta de acceso de captura de reproducción.

Un controlador de audio compatible con DRM debe admitir la interfaz IDrmAudioStream en sus objetos de controlador de miniporte WaveCíclica y WavePci, que exponen patillas receptoras para representar datos de audio. Para obtener una referencia a un objeto IDrmAudioStream del controlador, DRMK llama al método QueryInterface en el pin. El pin tiene una interfaz de tipo IMiniportWaveCyclicStream o IMiniportWavePciStream. La interfaz IDrmAudioStream solo admite un método, IDrmAudioStream::SetContentId (además de los tres métodos IUnknown ). Cuando DRMK llama a SetContentId, pasa un identificador de contenido y derechos de contenido, que el controlador asocia al flujo de datos del pin.

En lugar de llamar a las funciones DRM en Drmk.sys directamente, un controlador de miniport de WaveCíclica o WavePci puede acceder a las funciones DRM a través de la interfaz IDrmPort2 (IDrmPort2 se deriva de la clase base IDrmPort). En Microsoft Windows XP y versiones posteriores, los controladores de puerto WaveCíclica y WavePci admiten IDrmPort2. El controlador de minipuerto obtiene una referencia a la interfaz IDrmPort2 del controlador de puerto llamando al método QueryInterface del objeto de puerto con REFIID IID_IDrmPort2.

Algunos controladores de audio admiten la combinación de hardware y pueden controlar varios flujos de datos de entrada al mismo tiempo. Este tipo de controlador debe realizar un seguimiento de los identificadores de contenido de las secuencias individuales y los derechos de contenido compuesto de todas las secuencias. El controlador llama a IDrmPort::CreateContentMixed para determinar los derechos compuestos de una secuencia mixta y crear un identificador de contenido para identificar esa secuencia. Cuando el controlador termine de usar el identificador de contenido, debe llamar a IDrmPort::D estroyContent para eliminar el identificador de contenido.

Cada vez que se agrega o quita un flujo de entrada de un mezclador, el controlador debe eliminar el identificador de contenido de la combinación anterior y crear un nuevo identificador de contenido para la nueva combinación. Antes de eliminar un identificador de contenido antiguo, el controlador primero debe reenviar correctamente un nuevo identificador de contenido a todas las secuencias a las que reenviaba anteriormente el identificador de contenido anterior. Para obtener más información, consulte Reenvío de identificadores de contenido DRM.