drmAddContentHandlers 函数 (drmk.h)

函数 DrmAddContentHandlers 为系统提供处理受保护内容的函数列表。

语法

NTSTATUS DrmAddContentHandlers(
  [in] ULONG ContentId,
  [in] PVOID *paHandlers,
  [in] ULONG NumHandlers
);

参数

[in] ContentId

指定 DRM 内容 ID。 此参数标识受保护的 KS 音频流。

[in] paHandlers

指向函数指针数组的指针。 每个数组元素都指向一个内容处理程序。

[in] NumHandlers

指定 paHandlers 数组中的函数指针数。

返回值

DrmAddContentHandlers 如果调用成功,则返回STATUS_SUCCESS。 否则,它将返回相应的错误代码。

注解

在允许受保护的内容流经数据路径之前,系统会验证数据路径是否安全。 为此,系统会对数据路径中的每个模块进行身份验证,从数据路径的上游端开始,然后向下游移动。 当每个模块都经过身份验证时,该模块会提供有关数据路径中下一个模块的系统信息,以便也可以对其进行身份验证。 若要成功进行身份验证,模块的二进制文件必须签名为符合 DRM。

如果两个相邻模块通过 IoCallDriver 函数或下游模块的 COM 接口相互通信,上游模块将分别调用 DrmForwardContentToInterfaceDrmForwardContentToDeviceObject 函数,以便向系统提供有关下游模块的信息。 但是,如果两个模块使用任何其他类型的接口进行通信,上游模块将改为调用 函数DrmAddContentHandlers

paHandlers 数组包含指向下游模块中入口点的函数指针。 DrmAddContentHandlers 对实现这些函数的模块进行身份验证。 (如果入口点分布在多个模块中,该函数会对所有这些模块进行身份验证。) 此数组中的供应商定义的函数构成一个接口,该接口由调用函数的模块和实现函数的模块所理解。 DrmAddContentHandlers 不直接调用这些函数中的任何一个。

为此,上游模块可以使用 paHandlers 数组中的函数之一将内容 ID 和内容权限传递给下游模块。 下游模块需要内容 ID 来告知系统向其发送受保护内容的任何模块。

DrmAddContentHandlers 执行的功能与 PcAddContentHandlersIDrmPort2::AddContentHandlers 相同。 有关详细信息,请参阅 DRM 函数和接口

要求

要求
目标平台 通用
标头 drmk.h (包括 Drmk.h)
Library Drmk.lib
IRQL PASSIVE_LEVEL

另请参阅

DrmForwardContentToDeviceObject

DrmForwardContentToInterface

IDrmPort2::AddContentHandlers

IoCallDriver

PcAddContentHandlers