функция обратного вызова DXGKDDI_OPM_GET_INFORMATION (dispmprt.h)

Функция DXGKDDI_OPM_GET_INFORMATION извлекает сведения из заданного защищенного выходного объекта.

Синтаксис

DXGKDDI_OPM_GET_INFORMATION DxgkddiOpmGetInformation;

NTSTATUS DxgkddiOpmGetInformation(
  [in]  PVOID MiniportDeviceContext,
  [in]  HANDLE ProtectedOutputHandle,
  [in]  const DXGKMDT_OPM_GET_INFO_PARAMETERS *Parameters,
  [out] PDXGKMDT_OPM_REQUESTED_INFORMATION RequestedInformation
)
{...}

Параметры

[in] MiniportDeviceContext

Дескриптор для блока контекста, связанного с видеоадаптером. Ранее функция DxgkDdiAddDevice драйвера мини-порта дисплея предоставляла этот дескриптор подсистеме графического ядра DirectX.

[in] ProtectedOutputHandle

Дескриптор защищенного выходного объекта. Функция DxgkDdiOPMCreateProtectedOutput создает защищенный выходной объект и возвращает дескриптор объекту . Защищенный выходной объект, соответствующий этому дескриптору, должен иметь семантику OPM.

[in] Parameters

Указатель на структуру DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS , содержащую параметры, используемые для получения сведений из защищенного выходного объекта, дескриптор которого указан в параметре ProtectedOutputHandle . DXGKDDI_OPM_GET_INFORMATION определяет, содержат ли параметры допустимый запрос от приложения, которое косвенно создало защищенный выходной объект. Дополнительные сведения см. в разделе «Примечания».

[out] RequestedInformation

Указатель на структуру DXGKMDT_OPM_REQUESTED_INFORMATION , которая получает сведения о защищенном выходном объекте, если DXGKDDI_OPM_GET_INFORMATION успешно возвращается.

Если DXGKDDI_OPM_GET_INFORMATION не удается, значение, указывающее на RequestedInformation , остается неизменным.

Возвращаемое значение

DxgkDdiOPMGetCOPPCompatibleInformation возвращает STATUS_SUCCESS или код ошибки Ntstatus.h .

Комментарии

Подсистема ядра графики DirectX должна вызывать DXGKDDI_OPM_GET_INFORMATION , только если выходные данные имеют семантику OPM.

Прежде чем подсистема графического ядра DirectX передает защищенный дескриптор вывода параметру ProtectedOutputHandle в вызове DXGKDDI_OPM_GET_INFORMATION, подсистема ядра графики DirectX всегда передает защищенный дескриптор вывода функциям DxgkDdiOPMSetSigningKeyAndSequenceNumbers и DxgkDdiOPMGetRandomNumbers .

DXGKDDI_OPM_GET_INFORMATION извлекает один из следующих типов сведений:

  • Тип соединителя защищенного вывода.
  • Типы защиты содержимого, поддерживаемые защищенными выходными данными. Защищенные выходные данные в настоящее время поддерживают ACP, CGMS-A и HDCP.
  • Текущий уровень виртуальной защиты защищенных выходных данных для определенного типа защиты.
  • Фактический уровень защиты физических выходных данных для определенного типа защиты.
  • Версия HDCP SRM, которую в настоящее время использует защищенный выход.
  • Тип шины расширения, используемой графическим адаптером, и способ подключения графического адаптера к северному мосту компьютера.
  • Формат изображений, отправляемых графическим адаптером из физических выходных данных на монитор.

Элемент guidInformationструктуры DXGKMDT_OPM_GET_INFO_PARAMETERS , на которую указывает параметр Parameters , никогда не должен содержать идентификаторы GUID DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION и DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING, так как только приложения COPP должны указывать эти идентификаторы GUID.

Первые 4 байта элемента abParameters DXGKMDT_OPM_GET_INFO_PARAMETERS никогда не должны содержать тип защиты DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP, если guid DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL или DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL указан в элементе guidInformationDXGKMDT_OPM_GET_INFO_PARAMETERS, так как этот тип защиты используется только в приложениях COPP.

При вызове функции DXGKDDI_OPM_GET_INFORMATION драйвер должен выполнить следующую последовательность.

  1. Убедитесь, что защищенный дескриптор вывода, переданный параметру ProtectedOutputHandleDXGKDDI_OPM_GET_INFORMATION , имеет семантику OPM.

  2. Убедитесь, что сведения в параметре Parameters были подписаны ключом подписывания защищенного выходного объекта. Ключ подписывания защищенного выходного объекта был ранее задан при вызове функции DxgkDdiOPMSetSigningKeyAndSequenceNumbers . Для проверки подписи следует использовать блочный шифр AES и алгоритм подписывания OMAC-1. Сведения об AES см. на веб-сайте RSA Laboratories . Сведения об OMAC-1 см. на странице справочника по DXGKMDT_OPM_OMAC .

  3. Получение запрошенных сведений.

  4. Скопируйте случайное число, указанное членом rnRandomNumberDXGKMDT_OPM_GET_INFO_PARAMETERS , в элемент rnRandomNumber в структуре DXGKMDT_OPM_STANDARD_INFORMATION или DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT. Используемая структура зависит от типа информации, запрошенной вызывающей стороной, и задается в элементе abRequestedInformationструктуры DXGKMDT_OPM_REQUESTED_INFORMATION , на которую указывает параметр RequestedInformation .

  5. Подпишите структуру DXGKMDT_OPM_REQUESTED_INFORMATION и поместите подпись в элемент omac DXGKMDT_OPM_REQUESTED_INFORMATION. Для подписывания структуры следует использовать блочный шифр AES и алгоритм подписывания OMAC-1.

Сначала подсистема ядра графики DirectX вызывает DXGKDDI_OPM_GET_INFORMATION для получения сведений о выходных данных, а затем вызывает DxgkDdiOPMConfigureProtectedOutput один или несколько раз для настройки выходных данных. Впоследствии подсистема графического ядра DirectX вызывает DXGKDDI_OPM_GET_INFORMATION без вызова DxgkDdiOPMConfigureProtectedOutput.

DXGKDDI_OPM_GET_INFORMATION должны быть доступны на страницы.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h (включая Dispmprt.h)
IRQL PASSIVE_LEVEL (см. раздел "Примечания")

См. также раздел

DxgkDdiAddDevice

DxgkDdiOPMConfigureProtectedOutput

DxgkDdiOPMCreateProtectedOutput

DXGKDDI_OPM_GET_INFORMATION

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMSetSigningKeyAndSequenceNumbers

DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS

DXGKMDT_OPM_OMAC

DXGKMDT_OPM_REQUESTED_INFORMATION