Partilhar via


Usando a DDI OPM

O subsistema kernel de gráficos do Microsoft DirectX (Dxgkrnl.sys) usa a DDI do OPM para criar saídas protegidas por OPM, destruir saídas protegidas por OPM, obter certificados, configurar saídas protegidas e obter informações sobre saídas protegidas e sobre o adaptador gráfico. O subsistema kernel de gráficos DirectX obtém ponteiros para as funções DDI do OPM quando chama a função DxgkDdiQueryInterface do driver de miniporta de exibição para consultar a interface identificada por GUID_DEVINTERFACE_OPM e DXGK_OPM_INTERFACE_VERSION_1. A sequência a seguir descreve como a DDI do OPM é normalmente usada para criar, manipular e destruir saídas protegidas por OPM:

  1. O subsistema kernel de gráficos DirectX chama a função DxgkDdiOPMCreateProtectedOutput para criar uma saída protegida por OPM. Uma saída protegida por OPM sempre corresponde exatamente a uma saída de vídeo física. A DxgkDdiOPMCreateProtectedOutput retorna um identificador para a saída recém-criada.

  2. O subsistema kernel de gráficos DirectX chama as funções DxgkDdiOPMGetCertificateSize e DxgkDdiOPMGetCertificate para obter o certificado OPM ou o certificado COPP do driver de miniporta de exibição e seu tamanho.

    Observação

    DxgkDdiOPMCreateProtectedOutput, DxgkDdiOPMGetCertificateSize, e DxgkDdiOPMGetCertificate são as únicas funções DDI do OPM para as quais o subsistema kernel de gráficos DirectX não passa um identificador de saída protegido.

  3. O subsistema kernel de gráficos DirectX chama a função DxgkDdiOPMGetRandomNumber para obter o número aleatório da saída protegida.

  4. O subsistema kernel de gráficos DirectX passa um buffer de 256 bytes em uma chamada para a função DxgkDdiOPMSetSigningKeyAndSequenceNumbers. O buffer contém dados criptografados com uma das chaves públicas do driver de miniporta de exibição. Para obter mais informações sobre as chaves públicas, baixe o documento sobre Proteção de Conteúdo de Saída do site Proteção de Conteúdo de Saída e Windows Vista. A chave pública usada depende da semântica da saída protegida. A chave pública no certificado OPM do driver de miniporta de exibição será usada se a saída protegida tiver uma semântica OPM. A chave pública no certificado COPP do driver de miniporta de exibição será usada se a saída protegida tiver uma semântica COPP. O esquema de criptografia usado para criptografar os dados também depende da semântica da saída protegida. Os dados são criptografados com o algoritmo RSA padrão se a saída protegida tiver uma semântica COPP e com o esquema de criptografia RSAES-OAEP se a saída protegida tiver uma semântica OPM. Para obter informações sobre RSA, AES e RSAES-OAEP, consulte o site Laboratórios RSA. O driver de miniporta de exibição usa a chave privada apropriada e o método de descriptografia para descriptografar os dados. Um número aleatório, dois números de sequência aleatórios e uma chave AES de 128 bits estão entre os dados descriptografados. A unidade de miniporta de exibição garante que o número aleatório corresponda ao número aleatório que o driver retornou quando a sua função DxgkDdiOPMGetRandomNumber foi chamada. Em seguida, o driver armazena os dois números de sequência e a chave AES de 128 bits.

  5. O subsistema kernel de gráficos DirectX agora pode chamar a função DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation para obter informações sobre uma saída protegida. O subsistema kernel de gráficos DirectX também pode chamar a DxgkDdiOPMConfigureProtectedOutput para configurar uma saída protegida. A DxgkDdiOPMGetInformation pode ser chamada somente se a saída tiver uma semântica OPM e a DxgkDdiOPMGetCOPPCompatibleInformation pode ser chamada somente se a saída tiver uma semântica COPP. Normalmente, o subsistema kernel de gráficos DirectX chama a DxgkDdiOPMGetInformation ou a DxgkDdiOPMGetCOPPCompatibleInformation para obter informações sobre a saída e, em seguida, chama a DxgkDdiOPMConfigureProtectedOutput uma ou mais vezes para configurar a saída. Em seguida, o subsistema kernel de gráficos DirectX chama a DxgkDdiOPMGetInformation ou a DxgkDdiOPMGetCOPPCompatibleInformation novamente. O subsistema kernel de gráficos DirectX pode obter os seguintes tipos de informações chamando a DxgkDdiOPMGetInformation ou a DxgkDdiOPMGetCOPPCompatibleInformation:

    O subsistema kernel de gráficos DirectX pode alterar as seguintes configurações chamando a DxgkDdiOPMConfigureProtectedOutput:

    • O nível de proteção atual de um dos tipos de proteção da saída. Por exemplo, a DxgkDdiOPMConfigureProtectedOutput pode ativar ou desativar o HDCP, desativar a proteção ACP ou alterar o nível de proteção ACP atual.
    • O SRM de HDCP atual que a saída protegida usa.
    • O padrão de sinalização atual que a saída protegida usa. Essa alteração só pode ser feita se a saída tiver uma semântica COPP.
  6. O subsistema kernel de gráficos DirectX chama a DxgkDdiOPMDestroyProtectedOutput ao terminar de usar o objeto da saída protegida.