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 版本。
  • 图形适配器使用的扩展总线类型以及图形适配器如何连接到计算机的北桥。
  • 图形适配器从物理输出发送到监视器的图像的格式。

guidInformationDXGKMDT_OPM_GET_INFO_PARAMETERS 结构的成员,参数 参数指向的DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION和DXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING GUID,因为只有 COPP 应用程序才应指定这些 GUID。

DXGKMDT_OPM_GET_INFO_PARAMETERSguidInformationDXGKMDT_OPM_GET_INFO_PARAMETERS 成员中指定DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVEL或DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID 时,abParameters 成员的前 4 个字节不应包含DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP保护类型。因为只有 COPP 应用程序才使用此保护类型。

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

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

  2. 验证 Parameters 参数中的信息是否已使用受保护的输出对象的签名密钥进行签名。 调用 DxgkDdiOPMSetSigningKeyAndSequenceNumbers 函数时,以前设置了受保护的输出对象的签名密钥。 高级加密标准(AES)块密码和 OMAC-1 签名算法应用于验证签名。 有关 AES 的信息,请参阅 RSA 实验室 网站。 有关 OMAC-1 的信息,请参阅 DXGKMDT_OPM_OMAC 参考页。

  3. 检索请求的信息。

  4. rnRandomNumber 成员 DXGKMDT_OPM_GET_INFO_PARAMETERS 指定的随机数复制到DXGKMDT_OPM_STANDARD_INFORMATION或DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT结构中的 rnRandomNumber 成员。 所使用的结构取决于调用方请求的信息类型,并在 abRequestedInformationDXGKMDT_OPM_REQUESTED_INFORMATION 结构的成员中设置,RequestedInformation 参数指向该结构。

  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