drmForwardContentToInterface 函数 (drmk.h)
函数 DrmForwardContentToInterface
接受指向对象的 COM 接口的指针,调用方打算将受保护内容转发到该对象。 函数对对象进行身份验证,并向对象发送系统分配给受保护内容的内容 ID 和 DRM 权限。
语法
NTSTATUS DrmForwardContentToInterface(
[in] ULONG ContentId,
[in] PUNKNOWN pUnknown,
[in] ULONG NumMethods
);
参数
[in] ContentId
指定 DRM 内容 ID。 此参数标识受保护的 KS 音频流。
[in] pUnknown
指向 COM 接口的指针,该接口直接接收 KS 音频筛选器的 KS 音频流数据。
[in] NumMethods
指定 pUnknown 指向的 COM 接口中方法的总数,包括其基接口中的所有方法。
返回值
DrmForwardContentToInterface
如果调用成功,则返回STATUS_SUCCESS。 否则,该方法将返回相应的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 说明 |
---|---|
|
指示与 pUnknown 关联的 KS 音频流不支持分配给 ContentId 的 DRM 内容权限。 |
注解
在允许受保护的内容流经数据路径之前,系统会验证数据路径是否安全。 为此,系统会对数据路径中的每个模块进行身份验证,从数据路径的上游端开始,然后向下游移动。 当每个模块都经过身份验证时,该模块会提供有关数据路径中下一个模块的系统信息,以便也可以对其进行身份验证。 若要成功进行身份验证,模块的二进制文件必须签名为符合 DRM。
如果数据路径中的两个相邻模块通过下游模块的 COM 接口相互通信,则上游模块调用 DrmForwardContentToInterface
函数,为系统提供指向 COM 接口的指针。 (如果两个模块通过 IoCallDriver 函数或下游模块的内容处理程序进行通信,上游模块将改为调用 DrmForwardContentToDeviceObject 或 DrmAddContentHandlers。)
DrmForwardContentToInterface
对实现 pUnknown 指向的 COM 接口中方法的模块进行身份验证。 (如果方法分布在多个模块之间,则函数会对所有这些模块进行身份验证。) 调用接口的模块和实现接口的模块都必须理解供应商定义的接口。 DrmForwardContentToInterface
除了此接口派生自 IUnknown 之外,不对此接口做出任何假设。
如果 DrmForwardContentToInterface
成功对驱动程序或库进行身份验证,它将执行以下操作:
-
查询 pUnknown 接口以获取其 IDrmAudioStream 接口。 请注意,尽管 对
DrmForwardContentToInterface
pUnknown 接口中的所有方法进行身份验证,但它不会调用 除基本 IUnknown 方法以外的 pUnknown 接口中的任何方法。 -
调用 IDrmAudioStream::SetContentId 以设置音频流的 DRM 内容 ID 和 DRM 内容权限。 在返回之前,
DrmForwardContentToInterface
释放 IDrmAudioStream 接口。
DrmForwardContentToInterface
执行与 PcForwardContentToInterface 和 IDrmPort::ForwardContentToInterface 相同的功能。 有关详细信息,请参阅 DRM 函数和接口。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | drmk.h (包括 Drmk.h) |
Library | Drmk.lib |
IRQL | PASSIVE_LEVEL |
另请参阅
DrmForwardContentToDeviceObject