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)
Drmk.lib
IRQL PASSIVE_LEVEL

另请参阅

DrmForwardContentToDeviceObject

DrmForwardContentToInterface

IDrmPort2::AddContentHandlers

IoCallDriver

PcAddContentHandlers