Funciones e interfaces drm

Los componentes del controlador del sistema Drmk.sys y Portcls.sys implementan una colección de funciones y interfaces DRM que los controladores usan para administrar los derechos digitales del contenido de audio de streaming de kernel. El componente Drmk.sys implementa varias funciones DrmXxx y Portcls.sys implementa un conjunto específico de DRM de funciones PcXxx y también las interfaces IDrmPort e IDrmPort2 .

Están disponibles las siguientes funciones DRM:

DrmAddContentHandlers

Proporciona al sistema una interfaz de controlador que consta de una lista de funciones para controlar el contenido protegido. DrmCreateContentMixed

Crea un identificador de contenido DRM para identificar una secuencia de audio KS que contiene contenido mixto de varias secuencias de entrada. DrmDestroyContent

Elimina un identificador de contenido DRM. DrmForwardContentToDeviceObject

Autentica un controlador y lo envía el identificador de contenido DRM y los derechos de contenido que el sistema ha asignado a una secuencia que contiene contenido protegido. DrmForwardContentToFileObject

Función obsoleta. DrmForwardContentToInterface

Autentica un objeto de controlador y lo envía el identificador de contenido DRM y los derechos de contenido que el sistema ha asignado a una secuencia que contiene contenido protegido. DrmGetContentRights

Recupera los derechos de contenido drm que el sistema ha asignado a un identificador de contenido DRM. Las funciones de esta lista se declaran en el archivo de encabezado Drmk.h. El controlador del sistema DRMK en modo kernel, Drmk.sys, exporta los puntos de entrada para estas funciones.

En Windows XP y versiones posteriores, el controlador del sistema PortCls, Portcls.sys, exporta un conjunto diferente de puntos de entrada para el mismo conjunto de funciones DRM. Los nombres de las funciones PortCls son similares a los de la lista anterior, excepto que usan el prefijo Pc en lugar de Drm:

PcAddContentHandlers

PcCreateContentMixed

PcDestroyContent

PcForwardContentToDeviceObject

PcForwardContentToFileObject

PcForwardContentToInterface

PcGetContentRights

Estos nombres de función se declaran en el archivo de encabezado Portcls.h. Los puntos de entrada de Portcls.sys no hacen nada más que llamar a las funciones correspondientes en Drmk.sys. Los puntos de entrada de PortCls se proporcionan simplemente por comodidad para que un controlador de audio que ya esté conectado a Portcls.sys no necesite cargar explícitamente Drmk.sys.

En Windows XP y versiones posteriores, el mismo conjunto de funciones también se expone como métodos en las interfaces IDrmPort e IDrmPort2 :

IDrmPort2::AddContentHandlers

IDrmPort::CreateContentMixed

IDrmPort::D estroyContent

IDrmPort2::ForwardContentToDeviceObject

IDrmPort::ForwardContentToFileObject

IDrmPort::ForwardContentToInterface

IDrmPort::GetContentRights

Las interfaces IDrmPort e IDrmPort2 se declaran en el archivo de encabezado Portcls.h y se implementan en Portcls.sys. Estos métodos no hacen nada más que llamar a las funciones correspondientes en Drmk.sys. Un controlador de minipuerto obtiene una referencia a una interfaz IDrmPortx consultando su controlador de puerto para esta interfaz. La ventaja de usar una interfaz IDrmPortx en lugar de las funciones DrmXxx o PcXxx correspondientes es que el controlador puede usar esta consulta para determinar en tiempo de ejecución si la versión del sistema operativo admite DRM o no. Esto simplifica la tarea de escribir un único controlador que puede ejecutarse en versiones más recientes de Windows que admiten DRM y en versiones anteriores que no lo hacen. IDrmPort2 se deriva de IDrmPort y proporciona dos métodos adicionales.

Los controladores de puerto WaveCíclico y WavePci usan la interfaz IDrmAudioStream si es compatible con el controlador de minipuerto correspondiente. El controlador de puerto llama al método IDrmAudioStream::SetContentId para asignar la protección DRM al contenido digital en una secuencia de audio.

La macro DEFINE_DRMRIGHTS_DEFAULT , que se define en el archivo de encabezado Drmk.h, inicializa los miembros de una estructura DRMRIGHTS en sus valores predeterminados.