Partager via


En utilisant l’DDI OPM

Le sous-système du noyau graphique Microsoft DirectX (Dxgkrnl.sys) utilise le DDI OPM pour créer des sorties protégées OPM, détruire des sorties protégées OPM, obtenir des certificats, configurer des sorties protégées, obtenir des informations sur les sorties protégées et obtenir des informations sur la carte graphique. Le sous-système du noyau graphique DirectX obtient des pointeurs vers les fonctions DDI OPM lorsqu'il appelle la fonction DxgkDdiQueryInterface du pilote de miniport d'affichage pour interroger l'interface identifiée par GUID_DEVINTERFACE_OPM et DXGK_OPM_INTERFACE_VERSION_1. La séquence suivante décrit comment le DDI OPM est généralement utilisé pour créer, manipuler et détruire des sorties protégées OPM :

  1. Le sous-système du noyau graphique DirectX appelle la fonction DxgkDdiOPMCreateProtectedOutput pour créer une sortie protégée OPM. Une sortie protégée OPM correspond toujours exactement à une sortie vidéo physique. DxgkDdiOPMCreateProtectedOutput retourne un handle à la sortie nouvellement créée.

  2. Le sous-système du noyau graphique DirectX appelle les fonctions DxgkDdiOPMGetCertificateSize et DxgkDdiOPMGetCertificate pour obtenir le certificat OPM ou le certificat COPP du pilote de miniport d'affichage et sa taille.

    Remarque

    DxgkDdiOPMCreateProtectedOutput, DxgkDdiOPMGetCertificateSize et DxgkDdiOPMGetCertificate sont les seules fonctions DDI OPM auxquelles le sous-système du noyau graphique DirectX ne transfère pas de handle de sortie protégée.

  3. Le sous-système du noyau graphique DirectX appelle la fonction DxgkDdiOPMGetRandomNumber pour obtenir le nombre aléatoire de la sortie protégée.

  4. Le sous-système du noyau graphique DirectX transfère une mémoire tampon de 256 octets dans un appel à la fonction DxgkDdiOPMSetSigningKeyAndSequenceNumbers. La mémoire tampon contient des données chiffrées à partir de l'une des clés publiques du pilote de miniport d'affichage. Pour en savoir plus sur les clés publiques, veuillez télécharger le document « Protection du contenu des sorties » du site Web Protection du contenu des sorties et Windows Vista. La clé publique utilisée dépend de la sémantique de la sortie protégée. La clé publique du certificat OPM du pilote de miniport d'affichage est utilisée si la sortie protégée emploie une sémantique OPM. La clé publique du certificat COPP du pilote de miniport d'affichage est utilisée si la sortie protégée emploie une sémantique COPP. Le schéma de chiffrement utilisé pour chiffrer les données dépend également de la sémantique de la sortie protégée. Les données sont chiffrées avec l'algorithme RSA standard si la sortie protégée emploie une sémantique COPP, et avec le schéma de chiffrement RSAES-OAEP dans le cas d'une sémantique OPM. Pour en savoir plus sur RSA, AES et RSAES-OAEP, veuillez vous reporter au site Web de RSA Laboratories. Le pilote de miniport d'affichage utilise la clé privée et la méthode de déchiffrement appropriées pour déchiffrer les données. Un nombre aléatoire, deux nombres séquentiels aléatoires et une clé AES 128 bits sont contenus dans les données déchiffrées. Le pilote de miniport d'affichage garantit que le nombre aléatoire correspond à celui retourné par le pilote lorsque sa fonction DxgkDdiOPMGetRandomNumber a été appelée. Le pilote stocke ensuite les deux numéros séquentiels et la clé AES 128 bits.

  5. Le sous-système du noyau graphique DirectX peut désormais appeler la fonction DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation pour obtenir des informations auprès d'une sortie protégée. Le sous-système du noyau graphique DirectX peut également appeler DxgkDdiOPMConfigureProtectedOutput pour configurer une sortie protégée. DxgkDdiOPMGetInformation ne peut être appelé que si la sortie emploie une sémantique OPM, tandis que DxgkDdiOPMGetCOPPCompatibleInformation ne peut être appelée que dans le cas d'une sémantique COPP. En règle générale, le sous-système du noyau graphique DirectX appelle DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation pour obtenir des informations sur la sortie, puis appelle DxgkDdiOPMConfigureProtectedOutput une ou plusieurs fois pour configurer la sortie. Ensuite, le sous-système du noyau graphique DirectX appelle à nouveau DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation. Le sous-système du noyau graphique DirectX peut obtenir les types d'informations suivants en appelant DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation :

    • Le type de connecteur de sortie.
    • Les types de protection de contenu pris en charge par la sortie. Les sorties peuvent actuellement prendre en charge les protections suivantes :
    • Le niveau actuel de protection virtuelle d'une sortie pour un type de protection particulier.
    • Le niveau réel de protection physique d'une sortie pour un type de protection particulier.
    • La version du message de renouvellement du système (SRM, System Renewability Message) HDCP actuellement utilisée par la sortie. Pour en savoir plus sur le SRM HDCP, se reporter à Révision de spécification HDCP 1.1. Seul DxgkDdiOPMGetInformation peut obtenir ces informations.
    • Le vecteur de sélection de clé (KSV) de l'appareil HDCP connecté, et si l'appareil HDCP est un répéteur. Seul DxgkDdiOPMGetCOPPCompatibleInformation peut obtenir ces informations. Pour en savoir plus sur les répéteurs HDCP et les KSV, se reporter à HDCP Specification Revision 1.1.
    • Le type de bus d'extension utilisé par la carte graphique. PCI et AGP sont des exemples de bus d'expansion.
    • Le format des images envoyées par le connecteur physique associé à la sortie protégée à un moniteur.
    • Les normes de signalisation CGMS-A et ACP prises en charge par la sortie protégée. Seul DxgkDdiOPMGetCOPPCompatibleInformation peut obtenir ces informations.
    • L'identificateur de la sortie.
    • Les caractéristiques électriques d'un connecteur de sortie DVI (Digital Video Interface).

    Le sous-système du noyau graphique DirectX peut modifier les paramètres suivants en appelant DxgkDdiOPMConfigureProtectedOutput :

    • Le niveau de protection actuel de l'un des types de protection de la sortie. Par exemple, DxgkDdiOPMConfigureProtectedOutput peut activer ou désactiver HDCP et désactiver la protection ACP ou modifier le niveau de protection ACP actuel.
    • Le SRM HDCP actuel utilisé par la sortie protégée.
    • La norme de signalisation actuelle utilisée par la sortie protégée. Cette modification ne peut être effectuée que si la sortie emploie une sémantique COPP.
  6. Le sous-système du noyau graphique DirectX appelle DxgkDdiOPMDestroyProtectedOutput lorsqu'il finit d'utiliser l'objet sortie protégée.