Récupération des informations COPP-Compatible sur la sortie protégée
Le pilote miniport d’affichage peut recevoir des demandes de récupération d’informations compatibles COPP sur la sortie protégée associée au connecteur de sortie physique d’une carte graphique. La fonction DxgkDdiOPMGetCOPPCompatibleInformation du pilote miniport d’affichage est passée à un pointeur vers une structure DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS dans le paramètre Parameters qui contient la demande d’informations. DxgkDdiOPMGetCOPPCompatibleInformation écrit les informations requises dans la structure DXGKMDT_OPM_REQUESTED_INFORMATION vers laquelle pointe le paramètre RequestedInformation . Les membres guidInformation et abParameters de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS spécifient la demande d’informations. Selon la demande d’informations, le pilote de miniport d’affichage doit remplir les membres de la structure DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING ou DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION avec les informations requises et pointer le membre abRequestedInformation de DXGKMDT_OPM_REQUESTED_INFORMATION vers cette structure. Une fois que le pilote a spécifié les membres cbRequestedInformationSize (par exemple, sizeof (DXGKMDT_OPM_STANDARD_INFORMATION)) et abRequestedInformation de DXGKMDT_OPM_REQUESTED_INFORMATION, il doit calculer le code OMAC (One-Key Cipher Block Chaining) pour les données dans DXGKMDT_OPM_REQUESTED_INFORMATION et doit définir cet OMAC dans le membre omac de DXGKMDT_OPM_REQUESTED_INFORMATION. Pour plus d’informations sur le calcul de l’OMAC, consultez l’algorithme OMAC-1.
Note Avant que DxgkDdiOPMGetCOPPCompatibleInformation ne retourne, le pilote de miniport d’affichage doit vérifier que le numéro de séquence spécifié dans le membre ulSequenceNumber de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS correspond au numéro de séquence que le pilote a actuellement stocké. Le pilote doit ensuite incrémenter le numéro séquentiel stocké.
Note Le pilote doit retourner un nombre aléatoire sécurisé par chiffrement 128 bits dans le membre rnRandomNumber de DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING ou DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION. Le nombre aléatoire a été généré par l’application d’envoi et a été fourni dans le membre rnRandomNumber de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
Le pilote retourne les informations suivantes pour la demande indiquée :
Pour DXGKMDT_OPM_GET_SUPPORTED_PROTECTION_TYPES défini dans le membre guidInformation et non défini dans le membre abParameters de DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS, le pilote indique les types de mécanismes de protection disponibles. Pour indiquer les types de protection disponibles, le pilote retourne une combinaison de valeurs OU valide au niveau du bit à partir de l’énumération DXGKMDT_OPM_PROTECTION_TYPE dans le membre ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION. Les valeurs DXGKMDT_OPM_PROTECTION_TYPE_ACP, DXGKMDT_OPM_PROTECTION_TYPE_CGMSA et DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP sont valides.
Pour DXGKMDT_OPM_GET_CONNECTOR_TYPE définie dans guidInformation et non définie dans abParameters, le pilote indique le type de connecteur. Pour indiquer le type de connecteur, le pilote retourne une combinaison de valeurs OU valide au niveau du bit à partir de l’énumération D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY dans le membre ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION.
Pour DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL ou DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL définie dans guidInformation et le type de protection défini dans abParameters, le pilote retourne une valeur de niveau de protection dans le membre ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION. Si le type de protection est DXGKMDT_OPM_PROTECTION_TYPE_ACP, la valeur de niveau de protection provient de l’énumération DXGKMDT_OPM_ACP_PROTECTION_LEVEL . Si le type de protection est DXGKMDT_OPM_PROTECTION_TYPE_CGMSA, la valeur de niveau de protection provient de l’énumération DXGKMDT_OPM_CGMSA . Si le type de protection est DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP, la valeur de niveau de protection provient de l’énumération DXGKMDT_OPM_HDCP_PROTECTION_LEVEL .
La requête DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL retourne le niveau de protection actuellement défini pour la sortie protégée. La requête DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL retourne le niveau de protection actuellement défini pour le connecteur physique associé à la sortie protégée.
Pour DXGKMDT_OPM_GET_ADAPTER_BUS_TYPE définie dans guidInformation et non définie dans abParameters, le pilote identifie le type de bus qui connecte un adaptateur graphique au pont nord d’un circuit de carte mère. Pour identifier le type du bus, le pilote retourne une combinaison de valeurs OU valide au niveau du bit à partir de l’énumération DXGKMDT_OPM_BUS_TYPE_AND_IMPLEMENTATION dans le membre ulInformation de DXGKMDT_OPM_STANDARD_INFORMATION.
Le pilote peut uniquement combiner la valeur DXGKMDT_OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED (0x80000000) avec l’une des valeurs de type bus lorsqu’aucun des signaux d’interface entre la carte graphique et d’autres sous-systèmes n’est disponible sur un bus d’extension qui utilise une spécification disponible publiquement et un type de connecteur standard. Les bus mémoire sont exclus de cette définition.
Pour DXGKMDT_OPM_GET_ACTUAL_OUTPUT_FORMAT définie dans guidInformation et non définie dans abParameters, le pilote retourne des informations dans les membres de DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT qui décrivent comment le signal qui passe par le connecteur physique associé à la sortie protégée est mis en forme.
Pour DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING définie dans guidInformation et non définie dans abParameters, le pilote retourne des informations dans les membres de DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING qui décrivent comment le signal qui passe par le connecteur physique associé à la sortie protégée est protégé.
Pour DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION définie dans guidInformation et non définie dans abParameters, le pilote retourne des informations dans les membres de DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION qui contiennent des informations HDCP (High-bandwidth Digital Content Protection).