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 结构的指针,该结构包含要从在 ProtectedOutputHandle 参数中指定的句柄的受保护输出对象检索的 COPP 兼容信息的类型。 DxgkDdiOPMGetCOPPCompatibleInformation 确定参数是否包含来自间接创建受保护输出对象的应用程序的有效请求。 有关详细信息,请参见“备注”部分。

[out] RequestedInformation

指向 DXGKMDT_OPM_REQUESTED_INFORMATION 结构的指针,如果 DxgkDdiOPMGetCOPPCompatibleInformation 成功返回,则接收受保护输出对象的 COPP 兼容信息。

如果 DxgkDdiOPMGetCOPPCompatibleInformation 失败, 则 RequestedInformation 指向的值保持不变。

返回值

DxgkDdiOPMGetCOPPCompatibleInformation 返回STATUS_SUCCESS或 Ntstatus.h 错误代码。

注解

仅当输出具有 COPP 语义时,DirectX 图形内核子系统应调用 DxgkDdiOPMGetCOPPCompatibleInformation

在 DirectX 图形内核子系统在调用 DxgkDdiOPMGetCOPPCompatibleInformation 中将受保护的输出句柄传递给 ProtectedOutputHandle 参数之前,DirectX 图形内核子系统始终将受保护的输出句柄传递给 DxgkDdiOPMSetSigningKeyAndSequenceNumbersDxgkDdiOPMGetRandomNumber 函数。

以下是与 DxgkDdiOPMGetCOPPCompatibleInformation 无关且与 DxgkDdiOPMGetInformation 函数无关的一些事实:

  • DirectX 图形内核子系统只能使用 COPP 语义将句柄传递给受保护的输出。

  • 参数指向的DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS结构未签名。

  • DirectX 图形内核子系统可以在 DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS 的 guidInformation 成员中传递DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING和DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION GUID。

  • DirectX 图形内核子系统无法在 DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS 的 guidInformation 成员中传递DXGKMDT_OPM_GET_CURRENT_HDCP_SRM_VERSION GUID。

  • DirectX 图形内核子系统可以指定 DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS abParameters 成员的前 4 个字节中的DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP,以及 DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS 的 guidInformation 成员中的DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL或DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID。

  • DirectX 图形内核子系统不能指定 DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS abParameters 成员的前 4 个字节中的DXGKMDT_OPM_PROTECTION_TYPE_HDCP,以及 DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS 的 guidInformation 成员中的 DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL 或 DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID。

调用其 DxgkDdiOPMGetCOPPCompatibleInformation 函数时,驱动程序必须执行以下序列。

  1. 验证传递给 DxgkDdiOPMGetCOPPCompatibleInformationProtectedOutputHandle 参数的受保护输出句柄是否具有 COPP 语义。

  2. 检索请求的信息。

  3. DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERSrnRandomNumber 成员指定的随机数复制到DXGKMDT_OPM_STANDARD_INFORMATION、DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT、DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING或DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION结构的 rnRandomNumber 成员。 使用的结构取决于调用方请求的信息类型。 结构在 RequestedInformation 参数指向的 DXGKMDT_OPM_REQUESTED_INFORMATION 结构的 abRequestedInformation 成员中设置。

  4. DXGKMDT_OPM_REQUESTED_INFORMATION 结构进行签名,并将签名放在 DXGKMDT_OPM_REQUESTED_INFORMATION 的 omac 成员中。 应使用 AES 块密码和 OMAC-1 签名算法对结构进行签名。 有关 AES 的信息,请参阅 RSA 实验室 网站。 有关 OMAC-1 的信息,请参阅 DXGKMDT_OPM_OMAC 参考页。

最初,DirectX 图形内核子系统调用 DxgkDdiOPMGetCOPPCompatibleInformation 以检索有关输出的信息,然后调用 DxgkDdiOPMConfigureProtectedOutput 一次或多次配置输出。 随后,DirectX 图形内核子系统调用 DxgkDdiOPMGetCOPPCompatibleInformation 而不调用 DxgkDdiOPMConfigureProtectedOutput

应使 DxgkDdiOPMGetCOPPCompatibleInformation 可分页。

要求

要求
目标平台 桌面
标头 dispmprt.h (包括 Dispmprt.h)
IRQL PASSIVE_LEVEL (请参阅备注部分)

另请参阅

DxgkDdiAddDevice

DxgkDdiOPMConfigureProtectedOutput

DxgkDdiOPMCreateProtectedOutput

DxgkDdiOPMGetInformation

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMSetSigningKeyAndSequenceNumbers

DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS

DXGKMDT_OPM_OMAC

DXGKMDT_OPM_REQUESTED_INFORMATION