функция обратного вызова 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.
Убедитесь, что защищенный дескриптор выходных данных, переданный в DXGKDDI_OPM_GET_INFORMATION параметр ProtectedOutputHandle имеет семантику OPM.
Убедитесь, что сведения в параметре Parameters подписаны с помощью ключа подписи защищенного выходного объекта. Ключ подписи защищенного выходного объекта ранее был задан при вызове функцииDxgkDdiOPMSetSigningKeyAndSequenceNumbers. Шифр блока расширенного шифрования (AES) и алгоритм подписи OMAC-1 следует использовать для проверки подписи. Дополнительные сведения об AES см. на веб-сайте лабораторий RSA. Сведения о OMAC-1 см. на странице справки по DXGKMDT_OPM_OMAC.
Получите запрошенные сведения.
Скопируйте случайное число, указанное элемент ом rnRandomNumber DXGKMDT_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 (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL (см. раздел "Примечания") |
См. также
DxgkDdiOPMConfigureProtectedOutput
DxgkDdiOPMCreateProtectedOutput
DxgkDdiOPMSetSigningKeyAndSequenceNumbers