функция обратного вызова DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION (dispmprt.h)
Функция DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION извлекает сведения, совместимые с протоколом COPP, из заданного защищенного выходного объекта.
Синтаксис
DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION DxgkddiOpmGetCoppCompatibleInformation;
NTSTATUS DxgkddiOpmGetCoppCompatibleInformation(
[in] PVOID MiniportDeviceContext,
[in] HANDLE ProtectedOutputHandle,
[in] const DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS *Parameters,
[out] PDXGKMDT_OPM_REQUESTED_INFORMATION RequestedInformation
)
{...}
Параметры
[in] MiniportDeviceContext
Дескриптор для блока контекста, связанного с видеоадаптером. Ранее функция DxgkDdiAddDevice драйвера мини-порта дисплея предоставляла этот дескриптор подсистеме графического ядра DirectX.
[in] ProtectedOutputHandle
Дескриптор защищенного выходного объекта. Функция DxgkDdiOPMCreateProtectedOutput создает защищенный выходной объект и возвращает дескриптор объекту . Защищенный выходной объект, соответствующий этому дескриптору, должен иметь семантику COPP.
[in] Parameters
Указатель на структуру DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS , содержащую тип сведений, совместимых с COPP, для извлечения из защищенного выходного объекта, дескриптор которого указан в параметре ProtectedOutputHandle . DxgkDdiOPMGetCOPPCompatibleInformation определяет, содержат ли параметры допустимый запрос от приложения, которое косвенно создало защищенный выходной объект. Дополнительные сведения см. в разделе «Примечания».
[out] RequestedInformation
Указатель на структуру DXGKMDT_OPM_REQUESTED_INFORMATION , которая получает сведения, совместимые с COPP защищенного выходного объекта, если dxgkDdiOPMGetCOPPCompatibleInformation возвращает успешно.
Если DxgkDdiOPMGetCOPPCompatibleInformation завершается сбоем, значение, на которое указывает RequestedInformation , остается неизменным.
Возвращаемое значение
DxgkDdiOPMGetCOPPCompatibleInformation возвращает STATUS_SUCCESS или код ошибки Ntstatus.h .
Комментарии
Подсистема ядра графики DirectX должна вызывать DxgkDdiOPMGetCOPPCompatibleInformation , только если выходные данные имеют семантику COPP.
Прежде чем подсистема графического ядра DirectX передает защищенный дескриптор вывода параметру ProtectedOutputHandle в вызове DxgkDdiOPMGetCOPPCompatibleInformation, подсистема графического ядра DirectX всегда передает защищенный дескриптор вывода функциям DxgkDdiOPMSetSigningKeyAndSequenceNumbers и DxgkDdiOPMGetRandomNumbers .
Ниже приведены некоторые факты, относящиеся к DxgkDdiOPMGetCOPPCompatibleInformation и не относящиеся к функции DxgkDdiOPMGetInformation :
Подсистема ядра графики DirectX может передавать дескриптор в защищенный выход только семантикой COPP.
Структура DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS , на которую указывает параметр Parameters , не подписана.
Подсистема графического ядра DirectX может передавать идентификаторы GUID DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING и DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION в элементе guidInformation DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
Подсистема ядра графики DirectX не может передать guid DXGKMDT_OPM_GET_CURRENT_HDCP_SRM_VERSION в элементе guidInformation DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
Подсистема графического ядра DirectX может указывать DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP в первых 4 байтах элемента abParameters DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS вместе с идентификатором GUID DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL или DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL в элементе guidInformation DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
Подсистема графического ядра DirectX не может указать DXGKMDT_OPM_PROTECTION_TYPE_HDCP в первых 4 байтах элемента abParameters DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS вместе с идентификатором GUID DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL или DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL в элементе guidInformation DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS.
Драйвер должен выполнить следующую последовательность при вызове функции DxgkDdiOPMGetCOPPCompatibleInformation .
Убедитесь, что защищенный дескриптор вывода, переданный параметру ProtectedOutputHandleобъекта DxgkDdiOPMGetCOPPCompatibleInformation , имеет семантику COPP.
Получение запрошенных сведений.
Скопируйте случайное число, указанное членом rnRandomNumberDXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS , в элемент rnRandomNumber структуры 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 , на которую указывает параметр RequestedInformation .
Подпишите структуру DXGKMDT_OPM_REQUESTED_INFORMATION и поместите подпись в элемент omac DXGKMDT_OPM_REQUESTED_INFORMATION. Для подписывания структуры следует использовать блочный шифр AES и алгоритм подписывания OMAC-1. Сведения об AES см. на веб-сайте RSA Laboratories . Сведения об OMAC-1 см. на странице справочника по DXGKMDT_OPM_OMAC .
Изначально подсистема графического ядра DirectX вызывает DxgkDdiOPMGetCOPPCompatibleInformation для получения сведений о выходных данных, а затем вызывает DxgkDdiOPMConfigureProtectedOutput один или несколько раз для настройки выходных данных. Впоследствии подсистема графического ядра DirectX вызывает DxgkDdiOPMGetCOPPCompatibleInformation без вызова DxgkDdiOPMConfigureProtectedOutput.
DxgkDdiOPMGetCOPPCompatibleInformation должен быть доступным для страниц.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | dispmprt.h (включая Dispmprt.h) |
IRQL | PASSIVE_LEVEL (см. раздел "Примечания") |
См. также раздел
DxgkDdiOPMConfigureProtectedOutput
DxgkDdiOPMCreateProtectedOutput
DxgkDdiOPMSetSigningKeyAndSequenceNumbers