COPP Status Events
This section applies only to Windows Server 2003 SP1 and later, and Windows XP SP2 and later.
External events can alter the nature of the protection that is applied to a connector or even modify the type of the connector. The video miniport driver must report these events to COPP applications whenever the driver receives a call to its COPPQueryStatus function. The video miniport driver must report the following external events by returning the specified flags only on the next call to COPPQueryStatus after the events occur:
Connection integrity: If the connection between the computer and the display device becomes unplugged, the video miniport driver should set the COPP_LinkLost flag in the dwFlags member of the DXVA_COPPStatusData structure, the DXVA_COPPStatusDisplayData structure, the DXVA_COPPStatusHDCPKeyData structure, or the DXVA_COPPStatusSignalingCmdData structure.
Connector reconfigurations: If the user causes the configuration of the physical connector to change, the video miniport driver should set the COPP_RenegotiationRequired flag in the dwFlags member of the DXVA_COPPStatusData, DXVA_COPPStatusDisplayData, DXVA_COPPStatusHDCPKeyData, or DXVA_COPPStatusSignalingCmdData structure.
The video miniport driver returns a pointer to a DXVA_COPPStatusData, DXVA_COPPStatusDisplayData, DXVA_COPPStatusHDCPKeyData, or DXVA_COPPStatusSignalingCmdData structure in the COPPStatus array member of the DXVA_COPPStatusOutput structure. A pointer to DXVA_COPPStatusOutput is returned through the pOutput parameter of COPPQueryStatus.
For example, consider two media playback applications, A and B, each controlling, via COPP, the HDCP protection level of the connector that attaches the computer to the display monitor. Each application controls its own unique COPP DirectX VA device. If the connector becomes unplugged, then the next time either application initiates a COPPQueryStatus request to its COPP device, the video miniport driver should return the COPP_LinkLost flag.
Assume application A is the first to initiate a call to COPPQueryStatus on its COPP device. Application A then receives the COPP_LinkLost flag and acts accordingly. If application A initiates a subsequent COPPQueryStatus call, it should not receive the COPP_LinkLost flag, unless the connector becomes unplugged again. When application B initiates a call to COPPQueryStatus on its COPP device, it receives the COPP_LinkLost flag and acts accordingly. Again, application B should not receive the COPP_LinkLost flag again until the connector becomes unplugged again.