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