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 错误代码。

注解

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

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

DXGKDDI_OPM_GET_INFORMATION 检索以下类型之一的信息:

  • 受保护输出的连接器类型。
  • 受保护的输出支持的内容保护类型。 受保护的输出当前可以支持 ACP、CGMS-A 和 HDCP。
  • 特定保护类型的受保护输出的当前虚拟保护级别。
  • 特定保护类型的物理输出的实际保护级别。
  • 受保护输出当前使用的 HDCP SRM 版本。
  • 图形适配器使用的扩展总线类型,以及图形适配器如何连接到计算机的北网桥。
  • 图形适配器从物理输出发送到监视器的图像的格式。

参数指向的DXGKMDT_OPM_GET_INFO_PARAMETERS结构的 guidInformation 成员不应包含DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION和DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING GUID,因为只有 COPP 应用程序应指定这些 GUID。

DXGKMDT_OPM_GET_INFO_PARAMETERSguidInformation 成员中指定DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL或DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID 时,DXGKMDT_OPM_GET_INFO_PARAMETERS 的 abParameters 成员的前 4 个字节不应包含DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP保护类型,因为只有 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. DXGKMDT_OPM_GET_INFO_PARAMETERSrnRandomNumber 成员指定的随机数复制到 DXGKMDT_OPM_STANDARD_INFORMATION 或 DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT 结构中的 rnRandomNumber 成员。 使用的结构取决于调用方请求的信息类型,并在 RequestedInformation 参数指向的 DXGKMDT_OPM_REQUESTED_INFORMATION 结构的 abRequestedInformation 成员中 设置。

  5. 对DXGKMDT_OPM_REQUESTED_INFORMATION结构进行签名,并将签名放在 DXGKMDT_OPM_REQUESTED_INFORMATION 的 omac 成员中。 应使用 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 (请参阅备注部分)

另请参阅

DxgkDdiAddDevice

DxgkDdiOPMConfigureProtectedOutput

DxgkDdiOPMCreateProtectedOutput

DXGKDDI_OPM_GET_INFORMATION

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMSetSigningKeyAndSequenceNumbers

DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS

DXGKMDT_OPM_OMAC

DXGKMDT_OPM_REQUESTED_INFORMATION