État de création de rapports d’une sortie protégée

Les événements externes peuvent modifier la nature de la protection appliquée à un connecteur ou même modifier le type du connecteur. Le pilote de miniport d’affichage doit signaler ces événements aux applications OPM chaque fois que le pilote reçoit un appel à sa fonction DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation . Le pilote de miniport d’affichage doit signaler les événements externes suivants en retournant les indicateurs de status spécifiés à partir de l’énumération DXGKMDT_OPM_STATUS uniquement lors de l’appel suivant à DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation après les événements :

La connexion fonctionne correctement
Si la connexion entre l’ordinateur et le périphérique d’affichage fonctionne correctement, le pilote de miniport d’affichage doit définir l’indicateur DXGKMDT_OPM_STATUS_NORMAL status dans le membre ulStatusFlags 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.

Intégrité de la connexion
Si l’ordinateur et le périphérique d’affichage sont déconnectés, le pilote de miniport d’affichage doit définir l’indicateur DXGKMDT_OPM_STATUS_LINK_LOST status dans le membre ulStatusFlags 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.

Reconfigurations du connecteur
Si l’utilisateur final modifie la configuration du connecteur physique, le pilote de miniport d’affichage doit définir l’indicateur DXGKMDT_OPM_STATUS_RENEGOTIATION_REQUIRED status dans le membre ulStatusFlags 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.

Altération
Si une falsification de la carte graphique ou du pilote miniport d’affichage de l’adaptateur s’est produite, le pilote de miniport d’affichage doit définir l’indicateur de DXGKMDT_OPM_STATUS_TAMPERING_DETECTED status dans le membre ulStatusFlags 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.

Appareil HDCP révoqué
Si un appareil HDCP (High-bandwidth Digital Content Protection) révoqué est directement ou indirectement attaché à un connecteur et si HDCP est activé, le pilote de miniport d’affichage doit définir l’indicateur de DXGKMDT_OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED status dans le membre ulStatusFlags de la structure DXGKMDT_OPM_STANDARD_INFORMATION ou DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT. Si HDCP n’est pas activé, le pilote n’est pas nécessaire pour définir cet indicateur status. Le pilote définit cette valeur status uniquement à partir d’un appel à sa fonction DxgkDdiOPMGetInformation pour déterminer si HDCP est activé.

Le pilote de miniport d’affichage retourne un pointeur vers une structure DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING ou DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION dans le membre abRequestedInformation de la structure DXGKMDT_OPM_REQUESTED_INFORMATION . Un pointeur vers DXGKMDT_OPM_REQUESTED_INFORMATION est retourné via le paramètre RequestedInformation de DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation.

Par exemple, considérez deux applications de lecture multimédia, A et B. Chaque application contrôle, via OPM, le niveau de protection HDCP du connecteur qui attache l’ordinateur au moniteur d’affichage. Chaque application contrôle sa propre sortie protégée unique. Si le connecteur est débranché, la prochaine fois que l’application lance une demande DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation à sa sortie protégée, le pilote de miniport d’affichage doit retourner l’indicateur DXGKMDT_OPM_STATUS_LINK_LOST status.

Supposons que l’application A soit la première à lancer un appel à DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation sur sa sortie protégée. L’application A reçoit ensuite l’indicateur DXGKMDT_OPM_STATUS_LINK_LOST et agit en conséquence. Si l’application A lance un appel DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation , elle ne doit pas recevoir l’indicateur DXGKMDT_OPM_STATUS_LINK_LOST, sauf si le connecteur est à nouveau débranché. Lorsque l’application B lance un appel à DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation sur sa sortie protégée, elle reçoit l’indicateur DXGKMDT_OPM_STATUS_LINK_LOST et agit en conséquence. Là encore, l’application B ne doit pas recevoir à nouveau l’indicateur DXGKMDT_OPM_STATUS_LINK_LOST tant que le connecteur n’est pas débranché à nouveau.