Recuperando informações sobre uma saída protegida
O driver de miniporto de exibição pode receber solicitações para recuperar informações sobre a saída protegida associada ao conector de saída física de um adaptador gráfico. A função DxgkDdiOPMGetInformation do driver de miniport de exibição é passada um ponteiro para uma estrutura DXGKMDT_OPM_GET_INFO_PARAMETERS no parâmetro Parameters que contém a solicitação de informações. DxgkDdiOPMGetInformation 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 do DXGKMDT_OPM_GET_INFO_PARAMETERS especificam 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_OUTPUT_ID ou DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT com as informações necessárias e apontar o membro abRequestedInformation de 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 de DXGKMDT_OPM_REQUESTED_INFORMATION. Para obter mais informações sobre como calcular o OMAC, consulte o algoritmo OMAC-1.
Nota Antes que DxgkDdiOPMGetInformation retorne, o driver de miniporto de exibição deve verificar se o OMAC especificado no membro omac de DXGKMDT_OPM_GET_INFO_PARAMETERS está correto. O driver também deve verificar se o número de sequência especificado no membro ulSequenceNumber de DXGKMDT_OPM_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_OUTPUT_ID ou DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT. O número aleatório foi gerado pelo aplicativo de envio e foi fornecido no membro rnRandomNumber de DXGKMDT_OPM_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 da estrutura DXGKMDT_OPM_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_HDCP e DXGKMDT_OPM_PROTECTION_TYPE_DPCP 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_HDCP, o valor no nível de proteção será da enumeração DXGKMDT_OPM_HDCP_PROTECTION_LEVEL . Se o tipo de proteção for DXGKMDT_OPM_PROTECTION_TYPE_DPCP, o valor no nível de proteção será da enumeração DXGKMDT_OPM_DPCP_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 driver identifica o tipo e a implementação do barramento que conecta um adaptador gráfico à ponte norte de um chipset de placa-mãe. Para identificar o tipo e a implementação 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 do DXGKMDT_OPM_STANDARD_INFORMATION.
Para DXGKMDT_OPM_GET_CURRENT_HDCP_SRM_VERSION definido em guidInformation e indefinido em abParameters, o driver retorna um valor no membro ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION que identifica o número de versão da mensagem de renovação do sistema HDCP (Proteção de Conteúdo Digital) de alta largura de banda atual para a saída protegida. Os bits menos significativos (bits 0 a 15) contêm o número de versão do SRM no formato little-endian. Para obter mais informações sobre o número de versão do SRM, consulte a Revisão de Especificação do HDCP 1.1.
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_OUTPUT_ID definido em guidInformation e indefinido em abParameters, o driver retorna informações nos membros do DXGKMDT_OPM_OUTPUT_ID que identifica o conector de saída.
Para DXGKMDT_OPM_GET_DVI_CHARACTERISTICS definido no membro guidInformation e indefinido no membro abParameters da estrutura DXGKMDT_OPM_GET_INFO_PARAMETERS, o driver indica características elétricas de um conector de saída DVI (Digital Video Interface). Para indicar as características elétricas de DVI, o driver retorna um dos valores da enumeração DXGKDT_OPM_DVI_CHARACTERISTICS no membro ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION.