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 接口相互通信,上游模块将分别调用 DrmForwardContentToInterface 或 DrmForwardContentToDeviceObject 函数,以便向系统提供有关下游模块的信息。 但是,如果两个模块使用任何其他类型的接口进行通信,上游模块将改为调用 函数DrmAddContentHandlers
。
paHandlers 数组包含指向下游模块中入口点的函数指针。 DrmAddContentHandlers
对实现这些函数的模块进行身份验证。 (如果入口点分布在多个模块中,该函数会对所有这些模块进行身份验证。) 此数组中的供应商定义的函数构成一个接口,该接口由调用函数的模块和实现函数的模块所理解。 DrmAddContentHandlers
不直接调用这些函数中的任何一个。
为此,上游模块可以使用 paHandlers 数组中的函数之一将内容 ID 和内容权限传递给下游模块。 下游模块需要内容 ID 来告知系统向其发送受保护内容的任何模块。
DrmAddContentHandlers 执行的功能与 PcAddContentHandlers 和 IDrmPort2::AddContentHandlers 相同。 有关详细信息,请参阅 DRM 函数和接口。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | drmk.h (包括 Drmk.h) |
Library | Drmk.lib |
IRQL | PASSIVE_LEVEL |