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


функция обратного вызова 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 всегда передает защищенный дескриптор выходных данных в функции DxgkDdiOPMSetSetSigningKeyAndSequenceNumber и DxgkDdiOPMGetRandomNumber.

DXGKDDI_OPM_GET_INFORMATION извлекает одну из следующих типов информации:

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

Элемент guidInformation guidInformation структуры DXGKMDT_OPM_GET_INFO_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 указан в guidInformation члена DXGKMDT_OPM_GET_INFO_PARAMETERS, так как только приложения COPP используют этот тип защиты.

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

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

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

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

  4. Скопируйте случайное число, указанное элемент ом rnRandomNumber DXGKMDT_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 (include 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