Поделиться через


Отчет о состоянии защищенных выходных данных

Внешние события могут изменить характер защиты, применяемой к соединителю, или даже изменить тип соединителя. Драйвер мини-порта дисплея должен сообщать об этих событиях приложениям OPM всякий раз, когда драйвер получает вызов своей функции DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation . Драйвер мини-порта отображения должен сообщать о следующих внешних событиях, возвращая указанные флаги состояния из перечисления DXGKMDT_OPM_STATUS только при следующем вызове DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation после возникновения событий:

Подключение работает правильно
Если соединение между компьютером и устройством отображения работает правильно, драйвер мини-порта дисплея должен установить флаг состояния DXGKMDT_OPM_STATUS_NORMAL в элементе ulStatusFlagsструктуры DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING или DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION .

Целостность подключения
Если компьютер и устройство отображения отключены, драйвер мини-порта дисплея должен установить флаг состояния DXGKMDT_OPM_STATUS_LINK_LOST в элементе ulStatusFlags структуры DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING или DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION.

Перенастройка соединителя
Если пользователь изменяет конфигурацию физического соединителя, драйвер мини-порта дисплея должен установить флаг состояния DXGKMDT_OPM_STATUS_RENEGOTIATION_REQUIRED в элементе ulStatusFlags структуры DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING или DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION.

Фальсификации
Если произошло изменение графического адаптера или драйвера мини-порта дисплея адаптера, драйвер мини-порта дисплея должен установить флаг состояния DXGKMDT_OPM_STATUS_TAMPERING_DETECTED в элементе ulStatusFlags структуры DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING или DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION.

Отозванное устройство HDCP
Если отозванное устройство с высокой пропускной способностью для защиты цифрового содержимого (HDCP) прямо или косвенно подключено к соединителю и если включена функция HDCP, драйвер мини-порта дисплея должен установить флаг состояния DXGKMDT_OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED в элементе ulStatusFlags структуры DXGKMDT_OPM_STANDARD_INFORMATION или DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT. Если HDCP не включен, драйвер не требуется устанавливать этот флаг состояния. Драйвер задает это значение состояния только при вызове функции DxgkDdiOPMGetInformation , чтобы определить, включена ли функция HDCP.

Драйвер мини-порта отображения возвращает указатель на структуру DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING или DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION в элементе abRequestedInformationструктуры DXGKMDT_OPM_REQUESTED_INFORMATION . Указатель на DXGKMDT_OPM_REQUESTED_INFORMATION возвращается с помощью параметра RequestedInformationобъекта DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation.

Например, рассмотрим два приложения воспроизведения мультимедиа: A и B. Каждое приложение управляет с помощью OPM уровнем защиты HDCP соединителя, который подключает компьютер к монитору дисплея. Каждое приложение управляет собственными уникальными защищенными выходными данными. Если соединитель отключится, в следующий раз, когда приложение инициирует запрос DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation к защищенным выходным данным, драйвер мини-порта дисплея должен вернуть флаг состояния DXGKMDT_OPM_STATUS_LINK_LOST.

Предположим, что приложение A первым инициирует вызов DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation в своих защищенных выходных данных. Затем приложение A получает флаг DXGKMDT_OPM_STATUS_LINK_LOST и действует соответствующим образом. Если приложение A инициирует последующий вызов DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation , оно не должно получать флаг DXGKMDT_OPM_STATUS_LINK_LOST, если соединитель не отключится снова. Когда приложение B инициирует вызов DxgkDdiOPMGetInformation или DxgkDdiOPMGetCOPPCompatibleInformation в своих защищенных выходных данных, оно получает флаг DXGKMDT_OPM_STATUS_LINK_LOST и действует соответствующим образом. Опять же, приложение B не должно снова получать флаг DXGKMDT_OPM_STATUS_LINK_LOST до тех пор, пока соединитель снова не будет отключен.