Compartilhar via


DDI de Proteção de Conteúdo

Esta seção se aplica somente ao Windows 7 e posterior e ao Windows Server 2008 R2 e versões posteriores do sistema operacional Windows.

A DDI de Proteção de Conteúdo é uma extensão da DDI do Direct3D versão 9 para proteger o vídeo. A DDI de Proteção de Conteúdo consiste nos pontos de entrada descritos nesta seção.

Funções DDI de proteção de conteúdo necessárias

Se a proteção de conteúdo for implementada no driver de exibição no modo de usuário, o driver deverá dar suporte às seguintes funções DDI de Proteção de Conteúdo:

Recursos de proteção de conteúdo

O driver de exibição no modo de usuário relatará apenas os recursos de proteção de conteúdo se ele der suporte a cada uma das funções DDI de Proteção de Conteúdo necessárias anteriores. Os valores de D3DDDICAPS_TYPE a seguir são usados pelo runtime do Direct3D para recuperar informações sobre os recursos de proteção de conteúdo compatíveis com o driver de exibição no modo de usuário. O runtime define esses valores D3DDDICAPS_TYPE no membro Type da estrutura D3DDDIARG_GETCAPS que o parâmetro pData da função GetCaps do driver aponta para quando o runtime chama GetCaps.

D3DDDICAPS_GETCONTENTPROTECTIONCAPS
O runtime fornece um ponteiro para uma estrutura DDICONTENTPROTECTIONCAPS para a combinação específica de criptografia e decodificação que o driver deve usar. O driver retorna um ponteiro para uma estrutura D3DCONTENTPROTECTIONCAPS preenchida que descreve os recursos de proteção de conteúdo do driver para a combinação de criptografia e decodificação. Para obter mais informações sobre D3DCONTENTPROTECTIONCAPS, consulte a documentação do SDK do DirectX.

D3DDDICAPS_GETCERTIFICATESIZE
O driver fornece um ponteiro para um número que especifica o tamanho, em bytes, do certificado do driver que é usado para um canal ou tipo de criptografia. Em seguida, o runtime do Direct3D usa esse tamanho para alocar um buffer para manter as informações de certificado que o runtime recebe quando o runtime chama GetCaps com D3DDDICAPS_GETCERTIFICATE.

D3DDDICAPS_GETCERTIFICATE
O runtime fornece um ponteiro para uma estrutura DDICERTIFICATEINFO que descreve o certificado que o driver deve recuperar.

Para um canal autenticado, o driver usa o certificado OPM existente, que é um certificado X.509 que é raiz assinado pela Microsoft.

Um aplicativo pode consultar o certificado do driver para determinar as seguintes informações:

  • Se o driver é confiável.

  • Se o driver é revogado.

  • A chave pública do driver. O aplicativo usa a chave pública do driver para estabelecer uma chave de sessão para um canal autenticado que é usado para autenticação.

Uma chamada para GetCaps com D3DDDICAPS_GETCERTIFICATE definida falhará se for chamada para o canal autenticado do Direct3D 9 porque esse canal não dá suporte a um certificado ou autenticação.

Para uma sessão de criptografia, o driver retorna seu certificado para o tipo de criptografia fornecido. Dependendo do tipo de criptografia e da troca de chaves que são usadas, um certificado pode ou não ser usado. Também é possível que diferentes tipos de criptografia possam usar certificados diferentes.

Funções DDI de proteção de conteúdo opcionais

Opcionalmente, o driver pode dar suporte às seguintes funções DDI de Proteção de Conteúdo:

  • A função EncryptionBlt lê dados criptografados de uma superfície protegida.

  • A função GetPitch recupera a inclinação de uma superfície protegida.

  • A função StartSessionKeyRefresh retorna um número aleatório que o decodificador/aplicativo e o driver/hardware podem usar posteriormente para executar uma operação OR exclusiva (XOR) com a chave de sessão.

  • A função FinishSessionKeyRefresh indica que todos os buffers desse ponto no tempo usarão o valor de chave de sessão atualizado.

  • A função GetEncryptionBltKey retorna a chave usada para descriptografar os dados retornados pela função EncryptionBlt do driver.

  • A função DecryptionBlt grava dados em uma superfície protegida.

Recursos protegidos por conteúdo

Os sinalizadores de D3DDDI_RESOURCEFLAGS a seguir são usados pelo runtime do Direct3D para conteúdo protegido. O runtime define esses sinalizadores D3DDDI_RESOURCEFLAGS no membro Flags da estrutura D3DDDIARG_CREATERESOURCE que o parâmetro pResource da função CreateResource do driver aponta para quando o runtime chama CreateResource.

RestrictedContent
O recurso pode conter conteúdo protegido. Um aplicativo pode ou não ter habilitado explicitamente a proteção de conteúdo antes que o aplicativo crie um recurso. O driver deve garantir que o runtime coloque a alocação para o recurso em um pool de memória que possa ser protegido. O driver deve permitir a criação de recursos protegidos bloqueáveis. No entanto, o driver deve falhar explicitamente nas chamadas para sua função Lock para bloquear essas superfícies enquanto a proteção de conteúdo está habilitada.

RestrictSharedAccess
Somente processos específicos devem ter permissão de acesso ao recurso compartilhado.

O driver deve restringir o acesso compartilhado a esse recurso. O runtime só pode chamar a função OpenResource do driver para abrir esse recurso com dispositivos de exibição (hDevice) dentro do processo que criou o recurso ou pelos dispositivos que receberam acesso explicitamente por meio do canal autenticado.