Función DrmForwardContentToDeviceObject (drmk.h)

La DrmForwardContentToDeviceObject función acepta un objeto de dispositivo que representa un dispositivo al que el autor de la llamada pretende reenviar contenido protegido. La función autentica el dispositivo y la envía el identificador de contenido y los derechos DRM que el sistema ha asignado al contenido protegido.

Sintaxis

NTSTATUS DrmForwardContentToDeviceObject(
  [in]           ULONG        ContentId,
  [in, optional] PVOID        Reserved,
  [in]           PCDRMFORWARD DrmForward
);

Parámetros

[in] ContentId

Especifica el identificador de contenido drm. Este parámetro identifica una secuencia de audio KS protegida.

[in, optional] Reserved

Reservado para uso futuro. Se establece en NULL.

[in] DrmForward

Puntero a una estructura DRMFORWARD que especifica un objeto de dispositivo y un objeto de archivo que identifican el dispositivo de destino y un pin de audio KS en ese dispositivo, respectivamente. La estructura también contiene el valor de contexto que la solicitudset-property KSPROPERTY_DRMAUDIOSTREAM_CONTENTID pasa al dispositivo.

Valor devuelto

DrmForwardContentToDeviceObject devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, devuelve un código de error adecuado.

Comentarios

Antes de permitir que el contenido protegido fluya a través de una ruta de acceso de datos, el sistema comprueba que la ruta de acceso de datos es segura. Para ello, el sistema autentica cada módulo en la ruta de acceso de datos a partir del final ascendente de la ruta de acceso de datos y se mueve hacia abajo. A medida que se autentica cada módulo, ese módulo proporciona información del sistema sobre el siguiente módulo en la ruta de acceso de datos para que también se pueda autenticar. Para autenticarse correctamente, el archivo binario de un módulo debe estar firmado como compatible con DRM.

Dos módulos adyacentes en la ruta de acceso de datos pueden comunicarse entre sí de varias maneras. Si el módulo ascendente llama al módulo de bajada a través de IoCallDriver, el módulo de bajada forma parte de un controlador WDM. En este caso, el módulo ascendente llama a la DrmForwardContentToDeviceObject función para proporcionar al sistema el objeto de dispositivo que representa el módulo de bajada. (Si los dos módulos se comunican a través de la interfaz COM o los controladores de contenido del módulo de bajada, el módulo ascendente llama a DrmForwardContentToInterface o DrmAddContentHandlers en su lugar).

El autor de la llamada rellena los miembros DeviceObject, FileObject y Context de la estructura DRMFORWARD a la que apunta DrmForward . DrmForwardContentToDeviceObject usa estos valores de la siguiente manera:

  • DeviceObject especifica el objeto de dispositivo que representa el controlador (el módulo de bajada). DrmForwardContentToDeviceObject usa el objeto de dispositivo para autenticar el controlador. Si se ejecuta correctamente, la función establece la propiedad KSPROPERTY_DRMAUDIOSTREAM_CONTENTID en el dispositivo mediante el envío de una solicitud set-property a un pin KS en el dispositivo.
  • FileObject especifica el pin KS al que DrmForwardContentToDeviceObject envía la solicitud de propiedad.
  • Context especifica un valor de contexto que el autor de la llamada pasa al controlador a través de la solicitud de propiedad. DrmForwardContentToDeviceObject copia el valor de contexto en el descriptor de propiedad de la solicitud. El valor de contexto suele ser un puntero a un búfer que contiene datos en algún formato personalizado que el autor de la llamada y el controlador comprenden. Por convención, si el módulo de bajada es un filtro KS, el miembro Context apunta a un objeto de archivo que especifica el pin KS al que la DrmForwardContentToDeviceObject función envía la solicitud de propiedad. En otras palabras, el miembro Context apunta al mismo objeto de archivo que el miembro FileObject . Los controladores de audio USB deben establecer el parámetro Context en un valor de USBD_PIPE_HANDLE.
La solicitud de propiedad también contiene el identificador de contenido DRM del parámetro ContentId y los derechos de contenido DRM que pertenecen a ese identificador de contenido. DrmForwardContentToDeviceObject copia estos valores en el valor de propiedad de la solicitud. DrmForwardContentToDeviceObject no hace ningún uso adicional del objeto de dispositivo después de devolver.

DrmForwardContentToDeviceObject realiza la misma función que PcForwardContentToDeviceObject e IDrmPort2::ForwardContentToDeviceObject. Para obtener más información, consulte Funciones e interfaces drm.

La propiedad KSPROPERTY_DRMAUDIOSTREAM_CONTENTID asigna el identificador de contenido DRM y los derechos de contenido DRM a un pin de audio KS.

Tabla de resumen de uso

Obtener Set Destino Tipo de descriptor de propiedad Tipo de valor de propiedad
No Anclar

KSP_DRMAUDIOSTREAM_CONTENTID

KSDRMAUDIOSTREAM_CONTENTID

 

El valor de propiedad (datos de operación) es una estructura de KSDRMAUDIOSTREAM_CONTENTID que especifica el identificador de contenido DRM de la secuencia y los derechos de contenido drm.

Valor devuelto

Una solicitud de propiedad KSPROPERTY_DRMAUDIOSTREAM_CONTENTID devuelve un código de estado que indica si el filtro KS puede aplicar los derechos de contenido DRM especificados, como se muestra en la tabla siguiente.
Código de estado Significado
STATUS_SUCCESS El filtro de audio KS aplica los derechos de contenido DRM especificados.
STATUS_NOT_IMPLEMENTED El filtro KS no puede aplicar los derechos de contenido DRM especificados.
 

La función DrmForwardContentToDeviceObject usa esta propiedad para establecer el identificador de contenido DRM y los derechos de contenido en la secuencia de audio que escriben el pin KS que es el destino de la solicitud de propiedad.

Un filtro de audio KS controla esta solicitud de propiedad de forma sincrónica. Si la solicitud devuelve STATUS_SUCCESS, todos los nodos de audio KS de bajada (consulte Nodos de topología de audio) del pin de audio KS de destino también se configuraron correctamente con el identificador de contenido DRM y los derechos de contenido DRM especificados. (Tenga en cuenta que un nodo de bajada es un receptor directo o indirecto para el contenido de audio que fluye a través de un pin de audio).

El sistema DRM puede establecer esta propiedad en cualquier momento durante la vigencia del objeto de archivo que representa un pin de audio KS. Si la solicitud no se realiza correctamente, el identificador de contenido DRM establecido anteriormente y los derechos de contenido DRM permanecen en vigor en la secuencia de audio KS.

El controlador de la propiedad KSPROPERTY_DRMAUDIOSTREAM_CONTENTID debe comprobar que el IRP de solicitud de propiedad se origina en modo kernel (es decir, confirme que el campo RequestorMode del IRP es igual a KernelMode). Si el IRP se origina en modo de usuario, el controlador debe producir un error en el IRP y devolver el código de estado INVALID_DEVICE_REQUEST.

DrmForwardContentToDeviceObject es un punto de entrada en el controlador del sistema DRMK, Drmk.sys. DRMK envía una solicitud de IOCTL_KS_PROPERTY para la propiedad KSPROPERTY_DRMAUDIOSTREAM_CONTENTID en irQL PASSIVE_LEVEL.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado drmk.h (incluye Drmk.h)
Library Drmk.lib
IRQL PASSIVE_LEVEL

Consulte también

DRMFORWARD

DrmAddContentHandlers

DrmForwardContentToInterface

IDrmPort2::ForwardContentToDeviceObject

IoCallDriver

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID

PcForwardContentToDeviceObject