Recuperando informações de COPP-Compatible sobre saída protegida
O driver de miniporto de exibição pode receber solicitações para recuperar informações compatíveis com COPP sobre a saída protegida associada ao conector de saída física de um adaptador gráfico. A função DxgkDdiOPMGetCOPPCompatibleInformation do driver de miniport de exibição é passada um ponteiro para uma estrutura DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS no parâmetro Parameters que contém a solicitação de informações. DxgkDdiOPMGetCOPPCompatibleInformation grava as informações necessárias na estrutura DXGKMDT_OPM_REQUESTED_INFORMATION para a qual o parâmetro RequestedInformation aponta. Os membros guidInformation e abParameters de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS especificar a solicitação de informações. Dependendo da solicitação de informações, o driver de miniporto de exibição deve preencher os membros da estrutura DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING ou DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION com as informações necessárias e apontar o membro abRequestedInformation do DXGKMDT_OPM_REQUESTED_INFORMATION para essa estrutura. Depois que o driver especificar os membros cbRequestedInformationSize (por exemplo, sizeof (DXGKMDT_OPM_STANDARD_INFORMATION)) e abRequestedInformation de DXGKMDT_OPM_REQUESTED_INFORMATION, o driver deve calcular o código de autenticação de mensagem do modo CBC (Encadeamento de Blocos de Criptografia) de uma chave para os dados no DXGKMDT_OPM_REQUESTED_INFORMATION e deve definir esse OMAC no membro omac do DXGKMDT_OPM_REQUESTED_INFORMATION. Para obter mais informações sobre como calcular o OMAC, consulte o algoritmo OMAC-1.
Nota Antes que DxgkDdiOPMGetCOPPCompatibleInformation retorne, o driver de miniporto de exibição deve verificar se o número de sequência especificado no membro ulSequenceNumber de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS corresponde ao número de sequência que o driver armazenou no momento. Em seguida, o driver deve incrementar o número de sequência armazenado.
Nota O driver deve retornar um número aleatório criptograficamente seguro de 128 bits no membro rnRandomNumber de DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING ou DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION. O número aleatório foi gerado pelo aplicativo de envio e foi fornecido no membro rnRandomNumber de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
O driver retorna as seguintes informações para a solicitação indicada:
Para DXGKMDT_OPM_GET_SUPPORTED_PROTECTION_TYPES definido no membro guidInformation e indefinido no membro abParameters de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS, o driver indica os tipos disponíveis de mecanismos de proteção. Para indicar os tipos de proteção disponíveis, o driver retorna uma combinação or bit a bit válida de valores da enumeração DXGKMDT_OPM_PROTECTION_TYPE no membro ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION. Os valores DXGKMDT_OPM_PROTECTION_TYPE_ACP, DXGKMDT_OPM_PROTECTION_TYPE_CGMSA e DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP são válidos.
Para DXGKMDT_OPM_GET_CONNECTOR_TYPE definido em guidInformation e indefinido em abParameters, o driver indica o tipo de conector. Para indicar o tipo de conector, o driver retorna uma combinação or bit a bit válida de valores da enumeração D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY no membro ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION.
Para DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL ou DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL definido em guidInformation e o tipo de proteção definido em abParameters, o driver retorna um valor de nível de proteção no membro ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION. Se o tipo de proteção for DXGKMDT_OPM_PROTECTION_TYPE_ACP, o valor no nível de proteção será da enumeração DXGKMDT_OPM_ACP_PROTECTION_LEVEL . Se o tipo de proteção for DXGKMDT_OPM_PROTECTION_TYPE_CGMSA, o valor no nível de proteção será da enumeração DXGKMDT_OPM_CGMSA . Se o tipo de proteção for DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP, o valor no nível de proteção será da enumeração DXGKMDT_OPM_HDCP_PROTECTION_LEVEL .
A solicitação DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL retorna o nível de proteção atualmente definido para a saída protegida. A solicitação DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL retorna o nível de proteção atualmente definido para o conector físico associado à saída protegida.
Para DXGKMDT_OPM_GET_ADAPTER_BUS_TYPE definido em guidInformation e indefinido em abParameters, o motorista identifica o tipo do barramento que conecta um adaptador gráfico à ponte norte de um chipset de placa-mãe. Para identificar o tipo do barramento, o driver retorna uma combinação or bit a bit válida de valores da enumeração DXGKMDT_OPM_BUS_TYPE_AND_IMPLEMENTATION no membro ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION.
O driver só pode combinar o valor DXGKMDT_OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED (0x80000000) com um dos valores do tipo barramento quando nenhum dos sinais de interface entre o adaptador gráfico e outros subsistemas estiverem disponíveis em um barramento de expansão que usa uma especificação disponível publicamente e um tipo de conector padrão. Os barramentos de memória são excluídos dessa definição.
Para DXGKMDT_OPM_GET_ACTUAL_OUTPUT_FORMAT definido em guidInformation e indefinido em abParameters, o driver retorna informações nos membros do DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT que descrevem como o sinal que passa pelo conector físico associado à saída protegida é formatado.
Para DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING definido em guidInformation e indefinido em abParameters, o driver retorna informações nos membros do DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING que descrevem como o sinal que passa pelo conector físico associado à saída protegida é protegido.
Para DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION definido em guidInformation e indefinido em abParameters, o driver retorna informações nos membros do DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION que contêm informações de HDCP (Proteção de Conteúdo Digital de Alta Largura de Banda).