DDI de protección de contenido

Esta sección solo se aplica a Windows 7 y versiones posteriores, y Windows Server 2008 R2 y versiones posteriores del sistema operativo Windows.

Content Protection DDI es una extensión de DDI de direct3D versión 9 para proteger el vídeo. La DDI de protección de contenido consta de los puntos de entrada que se describen en esta sección.

Funciones DDI de protección de contenido necesarias

Si la protección de contenido se implementa en el controlador de pantalla en modo de usuario, el controlador debe admitir las siguientes funciones DDI de protección de contenido:

Funcionalidades de protección de contenido

El controlador de pantalla en modo de usuario solo informa de las funcionalidades de protección de contenido si admite cada una de las funciones DDI de protección de contenido necesarias anteriores. El tiempo de ejecución de Direct3D usa los siguientes valores D3DDDICAPS_TYPE para recuperar información sobre las funcionalidades de protección de contenido que admite el controlador de visualización en modo de usuario. El tiempo de ejecución establece estos valores D3DDDICAPS_TYPE en el miembro Type de la estructura D3DDDIARG_GETCAPS a la que apunta el parámetro pData de la función GetCaps del controlador cuando el tiempo de ejecución llama a GetCaps.

D3DDDICAPS_GETCONTENTPROTECTIONCAPS
El tiempo de ejecución proporciona un puntero a una estructura DDICONTENTPROTECTIONCAPS para la combinación específica de cifrado y descodificación que debe usar el controlador. El controlador devuelve un puntero a una estructura D3DCONTENTPROTECTIONCAPS rellenada que describe las funcionalidades de protección de contenido del controlador para la combinación de cifrado y descodificación. Para obtener más información sobre D3DCONTENTPROTECTIONCAPS, consulte la documentación del SDK de DirectX.

D3DDDICAPS_GETCERTIFICATESIZE
El controlador proporciona un puntero a un número que especifica el tamaño, en bytes, del certificado del controlador que se usa para un canal o tipo criptográfico. Después, el tiempo de ejecución de Direct3D usa este tamaño para asignar un búfer para contener la información de certificado que recibe el tiempo de ejecución cuando el tiempo de ejecución llama a GetCaps con D3DDDICAPS_GETCERTIFICATE.

D3DDDICAPS_GETCERTIFICATE
El tiempo de ejecución proporciona un puntero a una estructura DDICERTIFICATEINFO que describe el certificado que el controlador debe recuperar.

Para un canal autenticado, el controlador usa el certificado OPM existente, que es un certificado X.509 firmado por Microsoft.

Una aplicación puede consultar el certificado del controlador para determinar la siguiente información:

  • Si el controlador es de confianza.

  • Indica si se revoca el controlador.

  • Clave pública del controlador. La aplicación usa la clave pública del controlador para establecer una clave de sesión para un canal autenticado que se usa para la autenticación.

Se produce un error en una llamada a GetCaps con D3DDDICAPS_GETCERTIFICATE set si se llama al canal autenticado de Direct3D 9 porque este canal no admite un certificado o autenticación.

Para una sesión criptográfica, el controlador devuelve su certificado para el tipo criptográfico especificado. Según el tipo criptográfico y el intercambio de claves que se usan, es posible que se use o no un certificado. También es posible que diferentes tipos criptográficos puedan usar certificados diferentes.

Funciones DDI de protección de contenido opcionales

Opcionalmente, el controlador puede admitir las siguientes funciones DDI de protección de contenido:

  • La función EncryptionBlt lee los datos cifrados de una superficie protegida.

  • La función GetPitch recupera el tono de una superficie protegida.

  • La función StartSessionKeyRefresh devuelve un número aleatorio que el descodificador o la aplicación y el controlador o hardware pueden usar posteriormente para realizar una operación OR exclusiva (XOR) con la clave de sesión.

  • La función FinishSessionKeyRefresh indica que todos los búferes de ese momento usarán el valor de clave de sesión actualizado.

  • La función GetEncryptionBltKey devuelve la clave que se usa para descifrar los datos que devuelve la función EncryptionBlt del controlador.

  • La función DecryptionBlt escribe datos en una superficie protegida.

Recursos protegidos de contenido

El tiempo de ejecución de Direct3D usa las marcas de D3DDDI_RESOURCEFLAGS siguientes para el contenido protegido. El tiempo de ejecución establece estas marcas de D3DDDI_RESOURCEFLAGS en el miembro Flags de la estructura D3DDDIARG_CREATERESOURCE a la que apunta el parámetro pResource de la función CreateResource del controlador cuando el tiempo de ejecución llama a CreateResource.

RestrictedContent
El recurso puede contener contenido protegido. Es posible que una aplicación haya habilitado o no explícitamente la protección de contenido antes de que la aplicación cree un recurso. El controlador debe asegurarse de que el tiempo de ejecución coloca la asignación del recurso en un grupo de memoria que se puede proteger. El controlador debe permitir la creación de recursos protegidos bloqueables. Sin embargo, el controlador debe producir un error explícito en las llamadas a su función Lock para bloquear estas superficies mientras está habilitada la protección de contenido.

RestrictSharedAccess
Solo se debe permitir el acceso a procesos específicos al recurso compartido.

El controlador debe restringir el acceso compartido a este recurso. El tiempo de ejecución solo puede llamar a la función OpenResource del controlador para abrir este recurso con dispositivos de visualización (hDevice) dentro del proceso que creó el recurso o por aquellos dispositivos a los que se les concedió acceso explícitamente a través del canal autenticado.