Получение COPP-Compatible сведений о защищенных выходных данных
Драйвер мини-порта дисплея может получать запросы на получение сведений, совместимых с COPP, о защищенных выходных данных, связанных с физическим выходным соединителем графического адаптера. Функция DxgkDdiOPMGetCOPPCompatibleInformation драйвера мини-порта дисплея передает указатель на структуру DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS в параметре Parameters , который содержит запрос информации. DxgkDdiOPMGetCOPPCompatibleInformation записывает необходимые сведения в структуру DXGKMDT_OPM_REQUESTED_INFORMATION , на которую указывает параметр RequestedInformation . Элементы guidInformation и abParameters DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS указывать запрос информации. В зависимости от запроса информации драйвер мини-порта дисплея должен заполнить элементы структуры 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 на такую структуру. После того как драйвер задает элементы cbRequestedInformationSize (например, sizeof (DXGKMDT_OPM_STANDARD_INFORMATION)) и abRequestedInformation DXGKMDT_OPM_REQUESTED_INFORMATION, драйвер должен вычислить код проверки подлинности сообщения в режиме CBC (OMAC) для данных в DXGKMDT_OPM_REQUESTED_INFORMATION и задать этот OMAC в элементе omac DXGKMDT_OPM_REQUESTED_INFORMATION. Дополнительные сведения о вычислении OMAC см. в статье Алгоритм OMAC-1.
Примечание Перед возвратом DxgkDdiOPMGetCOPPCompatibleInformation драйвер мини-порта дисплея должен убедиться, что порядковый номер, указанный в элементе ulSequenceNumber DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS, соответствует порядковой номеру, сохраненном драйвером. Затем драйвер должен увеличить хранимый порядковый номер.
Примечание Драйвер должен возвращать 128-разрядное криптографически безопасное случайное число в элементе rnRandomNumber DXGKMDT_OPM_STANDARD_INFORMATION, DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT, DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING или DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION. Случайное число было создано отправляющее приложение и было указано в элементе rnRandomNumber DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
Драйвер возвращает следующие сведения для указанного запроса:
Для DXGKMDT_OPM_GET_SUPPORTED_PROTECTION_TYPES, заданных в элементе guidInformation и неопределенных в элементе abParameters DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS, драйвер указывает доступные типы механизмов защиты. Чтобы указать доступные типы защиты, драйвер возвращает допустимое побитовое сочетание значений OR из перечисления DXGKMDT_OPM_PROTECTION_TYPE в элементе ulInformation DXGKMDT_OPM_STANDARD_INFORMATION. Допустимы значения DXGKMDT_OPM_PROTECTION_TYPE_ACP, DXGKMDT_OPM_PROTECTION_TYPE_CGMSA и DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP.
Для DXGKMDT_OPM_GET_CONNECTOR_TYPE задано в guidInformation и не определено в abParameters, драйвер указывает тип соединителя. Чтобы указать тип соединителя, драйвер возвращает допустимое побитовое сочетание значений OR из перечисления D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY в элементе ulInformation DXGKMDT_OPM_STANDARD_INFORMATION.
Для DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL или DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL, заданных в guidInformation , и типа защиты, заданного в abParameters, драйвер возвращает значение уровня защиты в элементе ulInformationDXGKMDT_OPM_STANDARD_INFORMATION. Если тип защиты DXGKMDT_OPM_PROTECTION_TYPE_ACP, значение уровня защиты будет из перечисления DXGKMDT_OPM_ACP_PROTECTION_LEVEL . Если тип защиты DXGKMDT_OPM_PROTECTION_TYPE_CGMSA, значение уровня защиты — из перечисления DXGKMDT_OPM_CGMSA . Если тип защиты DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP, значение уровня защиты будет из перечисления DXGKMDT_OPM_HDCP_PROTECTION_LEVEL .
Запрос DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL возвращает текущий уровень защиты для защищенных выходных данных. Запрос DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL возвращает текущий заданный уровень защиты для физического соединителя, связанного с защищенными выходными данными.
Для DXGKMDT_OPM_GET_ADAPTER_BUS_TYPE, заданных в guidInformation и неопределенных в abParameters, драйвер определяет тип шины, которая подключает графический адаптер к северному мосту набора микросхем материнской платы. Чтобы определить тип шины, драйвер возвращает допустимое побитовое сочетание значений OR из перечисления DXGKMDT_OPM_BUS_TYPE_AND_IMPLEMENTATION в элементе ulInformation DXGKMDT_OPM_STANDARD_INFORMATION.
Драйвер может объединять значение DXGKMDT_OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED (0x80000000) с одним из значений типа шины, если ни один из сигналов интерфейса между графическим адаптером и другими подсистемами не доступны в шине расширения, которая использует общедоступную спецификацию и стандартный тип соединителя. Шины памяти исключаются из этого определения.
Для DXGKMDT_OPM_GET_ACTUAL_OUTPUT_FORMAT, заданных в guidInformation и undefined в abParameters, драйвер возвращает сведения в членах DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT , описывающие форматирование сигнала, который проходит через физический соединитель, связанный с защищенным выходом.
Для DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING, заданных в guidInformation и undefined в abParameters, драйвер возвращает сведения в членах DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING , которые описывают, как защищается сигнал, проходящий через физический соединитель, связанный с защищенным выходом.
Для DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION, заданных в guidInformation и неопределенных в abParameters, драйвер возвращает сведения в членах DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION , которые содержат сведения о защите цифрового содержимого с высокой пропускной способностью (HDCP).