функция обратного вызова 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 драйвер должен выполнить следующую последовательность.
Убедитесь, что защищенный дескриптор вывода, переданный параметру ProtectedOutputHandleDXGKDDI_OPM_GET_INFORMATION , имеет семантику OPM.
Убедитесь, что сведения в параметре Parameters были подписаны ключом подписывания защищенного выходного объекта. Ключ подписывания защищенного выходного объекта был ранее задан при вызове функции DxgkDdiOPMSetSigningKeyAndSequenceNumbers . Для проверки подписи следует использовать блочный шифр AES и алгоритм подписывания OMAC-1. Сведения об AES см. на веб-сайте RSA Laboratories . Сведения об OMAC-1 см. на странице справочника по DXGKMDT_OPM_OMAC .
Получение запрошенных сведений.
Скопируйте случайное число, указанное членом rnRandomNumberDXGKMDT_OPM_GET_INFO_PARAMETERS , в элемент rnRandomNumber в структуре DXGKMDT_OPM_STANDARD_INFORMATION или DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT. Используемая структура зависит от типа информации, запрошенной вызывающей стороной, и задается в элементе abRequestedInformationструктуры DXGKMDT_OPM_REQUESTED_INFORMATION , на которую указывает параметр RequestedInformation .
Подпишите структуру 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 (см. раздел "Примечания") |
См. также раздел
DxgkDdiOPMConfigureProtectedOutput
DxgkDdiOPMCreateProtectedOutput
DxgkDdiOPMSetSigningKeyAndSequenceNumbers